gpt4 book ai didi

python - 在python-OpenCV中确定相机和人/脸之间的距离

转载 作者:行者123 更新时间:2023-12-02 17:34:38 24 4
gpt4 key购买 nike

有很多关于如何计算相机和物体之间距离的教程。是否可以使用 OpenCV 计算检测到的人与相机之间的大致距离?

最佳答案

是的,有可能。就像@hkchengrex 提到的,把你的脸当作一个物体。有很多方法。我会推荐 SIFT Feature Matching该链接之后描述的方法。

以下是大致所需的步骤:

  • 拍摄人物照片并手动测量距离。
  • 裁剪此图片以仅包含该人。
  • 提取图像特征(例如作为筛选描述符)
  • 与同一个人但未知距离拍摄第二张照片。
  • 通过筛选匹配检测人(见上面的链接)
  • 计算这两个筛选特征向量之间的转换
  • 将变换应用于在 1 中测量的距离。

  • 最好从提供的链接和 opencv 中的进一步 SIFT 教程开始。所需的方法是一种非常简单的方法,并且仅当正在检查的图片中的人与图片一中的人非常相似时才有效。对于更高级的方法,我会引用科学论文。搜索“人员检测”。

    回复评论

    TL;DR 现实中具有相同高度/宽度但在图像中显示更小/更大的人可以根据距离进行测量。

    所描述的方法在引擎盖下工作如下。只要他/她看起来非常相似,就可以在任何 future 的图像中找到在步骤 2 捕获的人(=裁剪图像)。在新图像中,它将为您提供该人所在的矩形区域。由于这个矩形的尺寸现在更小/更大,您可以通过这些更改来计算转换(基本上是 intercept theorem ),从而计算新的距离。

    这对于衡量任何人的一般方法意味着什么?
  • 如果此人的宽度/高度与第 2 步中的人相同,则此过程可以完美运行。如果它们的高度/宽度相似但不相同,则会出现计算错误。但结果可能仍然足以满足您的用例。 (您可以定义一个通用的人类,例如 1,8m 的高度和 XX 的宽度)。不过 SIFT 在这里可能有点太具体了。对不起,我只是 refer you to google看看什么效果最好。
  • 如果您的相机是固定的并且记录的场景没有太大变化,我只需定义一个地平面并使用深度值手动注释投影在该平面上的每个像素。因此,您只需检测任意人,查看他们的脚与地平面接触的位置并查找该像素定义的深度值。
  • 如果用例有更高的要求,您必须以更复杂的方式测量深度。这可以使用立体摄像机装置来完成,depth sensor或通过 structure from motion 的图像序列.

  • 所以OpenCV中没有“一个人可以做所有”的方法。它总是取决于用例、环境和相当复杂的方法的组合。

    关于python - 在python-OpenCV中确定相机和人/脸之间的距离,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/52627087/

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