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

想法如何使用opencv为IOS测量检测到的物体与相机的距离?,第1张

概述故事: 我有一个应用程序,检测面部构建与iphone sdk 6.0上的opencv每件事情都在工作我可以使用前置摄像头和“后置摄像头”我也可以打开/关闭手电筒我也可以显示我有多少fps此刻(现场). 但现在我想添加一个额外的功能,你可以看到这张脸有多远 是否有一些公式或一些好的想法或从专业人士那里得到解决方案? (如果您需要一些代码或某些东西,我可以向您展示您需要的所有东西) 感谢帮助和快速解答 故事:

我有一个应用程序,检测面部构建与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 pixelsPoint 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;}

这应该工作.我没有测试过它,但从数学角度看它似乎是正确的.

总结

以上是内存溢出为你收集整理的想法如何使用opencv为IOS测量检测到的物体与相机的距离?全部内容,希望文章能够帮你解决想法如何使用opencv为IOS测量检测到的物体与相机的距离?所遇到的程序开发问题。

如果觉得内存溢出网站内容还不错,欢迎将内存溢出网站推荐给程序员好友。

欢迎分享,转载请注明来源:内存溢出

原文地址: http://outofmemory.cn/web/1013182.html

(0)
打赏 微信扫一扫 微信扫一扫 支付宝扫一扫 支付宝扫一扫
上一篇 2022-05-22
下一篇 2022-05-22

发表评论

登录后才能评论

评论列表(0条)

保存