计算检测到的人的距离

Posted

技术标签:

【中文标题】计算检测到的人的距离【英文标题】:Calculate distance of a detected person 【发布时间】:2019-10-22 04:15:27 【问题描述】:

我开发了一个应用程序,它使用 Google Vision API(离线)检测人脸,然后将检测到的图像发送到 Microsoft Azure 以获取这张人脸的信息(年龄、性别...)。 在我的情况下,我还需要计算(至少近似)相机和检测到的人脸之间的距离,我在 Microsoft Azure 文档中没有看到这个选项,所以我想这没有实现。我应该用什么来计算相机和人脸之间的距离?我可以使用 OpenCV 或其他开源库来实现这个目标吗?

我在 SO (How to measure height, width and distance of object using camera?) 中看到了这个答案 但就我而言,我没有设备的高度,所以我认为我无法实施此解决方案(第一个答案 - drulabs 的答案)。

【问题讨论】:

你从相机得到的图像是2D的,所以它只有x轴和y轴,但它没有z轴,所以无法计算物体到物体的距离相机。 所以没有计算距离的选项?我可以用“流媒体”来代替吗? 是的,没有办法只使用图像处理来计算距离。但我不知道你所说的“流媒体”是什么意思? 我的意思是实时视频,因为我正在做面部检测我有图像(位图)但我也可以访问视频或相机正在检测的帧,我已经看到了一些 API作为 QUIVIDI,它通过检测获得距离。 【参考方案1】:

这个问题可以追溯到一年多以前,但最近我也在寻找这个问题的答案,我找到了一个适合我的简单解决方案。

在this article 中,作者描述了一种根据人眼之间的距离(以像素为单位)计算相机和人之间距离估计值的方法。

我在本文中使用的唯一内容是第 31 页上的图表,该图表表明(但未提及)眼睛距离 (dE) 和相机距离 (dC) 之间的反比关系:

dC = some_constant / dE

我使用这个简单的公式来估算距离。我使用人脸识别软件返回的人脸宽度估计值,而不是眼睛距离。您可以安全地执行此操作,因为第 35 页上的文章指出“眼睛距离和面部尺寸之间的关系是线性的,与人的 [the] 身高无关”。

经过一些试验后,我发现some_constant 的值对我来说工作得很好,很有用。对于不超过 5 米的距离,与实际距离的偏差约为 15%(我没有测试超出此范围)。精度显然还取决于人脸识别软件报告的人脸尺寸(宽度)的精度。

【讨论】:

以上是关于计算检测到的人的距离的主要内容,如果未能解决你的问题,请参考以下文章

849. 到最近的人的最大距离

测量 Yolo 检测到的物体的尺寸。前任。高度,宽度,与相机的距离

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

C++计算输入和保存点的结构与原点之间的距离,根据距离打印出列表

查找附近的人。

查找附近的人。