簡體   English   中英

想法如何使用opencv為IOS測量檢測到的物體與相機的距離?

[英]Ideas how can i measure distance of an detected object from Camera using opencv for IOS?

故事:

我有一個應用程序,檢測面部構建與iphone sdk 6.0上的opencv每件事情都在工作我可以使用前置攝像頭和“后置攝像頭”我也可以打開/關閉手電筒我也可以顯示我有多少fps此刻(現場)。

但現在我想添加一個額外的功能,你可以看到這張臉有多遠

在此輸入圖像描述

是否有一些公式或一些好的想法或從專業人士那里得到解決方案? (如果您需要一些代碼或某些東西,我可以向您展示您需要的所有東西)

感謝幫助和快速解答!^^

聽取每個人的目標c的翻譯

-(double) faceDistance{
    const NSInteger kFaceWidth = 10;
    const NSInteger kPicWidth = 640;
    CGPoint p1 = CGPointMake(10, 10);
    CGPoint p2 = CGPointMake(100, 70);
    int facePixelWidth;


    int slope = (p2.y - p1.y) / (p2.x - p1.x);

    double propOfPic = kPicWidth / facePixelWidth;
    double surfSize = propOfPic * kFaceWidth;
    double dist = surfSize / slope;

    return dist;
}

我在這里更新我的代碼是目標c的解決方案

我在圖像處理/ AR方面做了一些工作,但肯定不會認為自己是專家。 那就說讓我們繼續討論如何處理這個問題:

如果你想知道臉部有多遠,你可以根據臉部的平均大小來估計它。 我的意思是人臉的大小都非常相似(它們在任何方向上的偏差都不會超過幾厘米)。 因此,如果您進行一些測試,您可以計算出面在多個距離處的像素數,並使用trig來近似其他距離。 顯然你無法通過這種方法計算出非常精確的距離,但是你可以區分距離半米的人和距離3米的人。

您需要知道您正在使用的相機的分辨率,並可能使用每種可能的分辨率進行一些測試。

更新

好的,所以我被要求詳細說明一下。 圖片中看到的空間量與表面離相機的距離呈線性關系。

假設人臉寬10厘米

好吧,讓我們將相機指向一個直角的儀表棒。 將相機保持在10厘米遠的地方。 這看多少錢? 讓我們說它看到10厘米的米棒。

現在將相機移動到1米遠。 讓我們說它現在看到70厘米。 使用此信息,我們可以生成以下Java:

public static final int FACE_WIDTH = 10;
public static final int PIC_WIDTH = 640; // In pixels
Point p1 = new Point(10,10);
Point p2 = new Point(100,70);
int slope = (p2.y-p1.y)/(p2.x-p1.x);

public static double faceDistance(int facePixelWidth)
{
    double propOfPic = PIC_WIDTH / facePixelWidth;
    double surfSize = propOfPic * FACE_WIDTH;
    double dist = surfSize / slope;
    return dist;
}

應該工作。 我沒有測試過它,但從數學角度看它似乎是正確的。

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM