【发布时间】:2016-05-07 12:21:44
【问题描述】:
我正在开发一个 OpenCV 程序,以查找从相机到具有已知纵横比的矩形的距离。从前向视图中查找到矩形的距离可以正常工作:
实际距离和这样计算的距离很接近:
wtarget · pimage
d = c —————————————————————————————
2 · ptarget · tan(θfov / 2)
其中 wtarget 是目标的实际宽度(以英寸为单位),pimage 是整个图像的像素宽度,ptarget是检测到的四边形的最大宽度(以像素为单位)的长度,θfov是我们网络摄像头的 FOV。然后乘以某个常数c。
当目标矩形从非正向的角度查看时会出现此问题:
这两个方向之间的实际距离差异很小,但检测到的距离相差近 2 英尺。
我想知道的是如何在考虑不同视角的情况下一致地计算距离。我已经尝试过getPerspectiveTransform,但这需要我知道目标的最终比例——我只知道纵横比。
【问题讨论】:
-
是否可以让您在首次使用时拼出缩写 (SOAWFU)?什么是视场?那是相机镜头的视野角度吗?是否可以将倾斜的框标准化为相机镜头,并以这种方式计算距离? (使用中点将透视框转换为纯矩形,然后使用普通视图计算确定距离?)
-
@zipzit 是的,它是相机的水平视野。似乎使用中点会创建一个平行四边形。不知道我会用这个平行四边形做什么。
-
这是一个很棒的答案,演示与执行 css 实现的计算相关:How to match 3D perspective of real photo and object in CSS3 3D transforms