gpt4 book ai didi

c++ - 在OpenCV中查找具有已知纵横比的矩形的距离

转载 作者:塔克拉玛干 更新时间:2023-11-02 23:47:25 25 4
gpt4 key购买 nike

我正在开发一个 OpenCV 程序,以查找从相机到具有已知纵横比的矩形的距离。从前向 View 中查找到矩形的距离效果很好:

forward-facing

实际距离与计算出的距离非常接近:

            wtarget · pimaged = c ——————————————————————————       2 · ptarget · tan(θfov / 2)

wtarget 是目标的实际宽度(以英寸为单位),pimage 是整个图像的像素宽度,ptarget 是检测到的四边形的最大宽度(以像素为单位)的长度,θfov 是我们网络摄像头的视野。然后乘以某个常数 c

当从非前向视角查看目标矩形时会出现此问题:

not forward-facing

这两个方向之间的实际距离差异很小,但检测到的距离相差近 2 英尺。

我想知道的是如何在考虑不同视角的情况下始终如一地计算距离。我试验过 getPerspectiveTransform,但这需要我知道目标的结果比例 - 我只知道纵横比。

最佳答案

这是你知道的:

  1. 左上角和右上角之间的距离(以英寸为单位)(w_target)
  2. 2D 平面上 (p_target) 的角点之间的距离(以像素为单位)

所以问题在于,当矩形呈一定角度时,您没有考虑 p_target 的缩小距离。例如,当矩形旋转 45 度时,您将在 p_target 中丢失大约一半的像素,但您的公式假定 w_target 是常数,因此您高估了距离。

为了解决这个问题,您应该估计盒子转动的角度。我不确定是否有一种简单的方法可以从 getPerspectiveTransform 中提取该信息,但它可能是可行的。您可以设置约束优化,其中决策变量是距离和倾斜角度,并在框的左右点之间强制执行公制距离。

最后,无论您在做什么,都应确保您的相机已校准。根据您的应用程序,您可以使用 AprilTags只是为了解决您的问题。

关于c++ - 在OpenCV中查找具有已知纵横比的矩形的距离,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/35090058/

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