gpt4 book ai didi

ios - 想法如何使用 IOS 的 opencv 测量检测到的物体与相机的距离?

转载 作者:可可西里 更新时间:2023-11-01 05:37:12 29 4
gpt4 key购买 nike

故事:

我有一个应用程序可以检测在 iphone sdk 6.0 上使用 opencv 构建的人脸一切正常我可以使用前置摄像头和“后置摄像头”我也可以打开/关闭手电筒我可以显示多少我目前的 fps(实时)。

但现在我想添加一个额外的功能,你可以看到这张脸有多远

enter image description here

是否有一些公式或一些好的想法或从专业人士那里获得解决方案?(如果您需要一些代码或其他东西,我可以向您展示您需要的所有东西)

感谢帮助和快速解答!^^

hear 是针对每个 objective-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;
}

我已经更新了我的代码,这是 objective-c 的解决方案

最佳答案

我在图像处理/AR 方面做过一些工作,但肯定不会认为自己是专家。也就是说,让我们继续讨论我将如何解决这个问题:

如果你想知道一张脸有多远,你可以根据一张脸的平均大小来估计它。我的意思是,人脸的大小都非常相似(它们在任何方向上的偏差都不会超过几厘米)。所以如果你做一些测试,你可以计算出一张脸在几个距离处有多少像素,并使用三角函数来近似其他距离。显然,您无法使用此方法计算出非常准确的距离,但您可以区分半米外的人和 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;
}

应该 工作。我没有测试过它,但从数学上讲它似乎是正确的。

关于ios - 想法如何使用 IOS 的 opencv 测量检测到的物体与相机的距离?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/14482445/

29 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com