基于opencv和python的相机到目标距离计算

2024-10-04 21:10:37 发布

您现在位置:Python中文网/ 问答频道 /正文

我用微软的lifecamhd3000在我的四旋翼机上实现自主着陆。 我想计算一下四旋翼机上的机载摄像头和一个印有矩形的着陆板之间的距离。然后,该距离可以作为误差反馈给PID控制器。我用python编写代码。有谁能给我一个简单的方法来找出距离吗。在

注:我不需要精确的距离值


Tags: 方法代码距离控制器pid误差摄像头矩形
1条回答
网友
1楼 · 发布于 2024-10-04 21:10:37

如果平台矩形大小已知/恒定,则它是可行的

  1. 一些要准备的数据

    在已知距离处拍摄平台矩形的图像。使用您的Microsoft Lifecam HD 3000与直升机上相同的设置(或单独使用),计算/测量矩形大小(以像素为单位)并存储它。所以你有:

    • xs0,ys0-矩形大小[px]
    • d0-距相机图像的距离[m]
  2. 拍照

    找到它上面的矩形,并尝试将其投影到垂直于相机视图轴的位置。然后以像素为单位计算其大小xs,ys

  3. 计算距离

    使用三角形相似性

    FOV example

    这张图片是为这个Q/ASpecifiyng speed from visual size而做的,这可能会有帮助。所以

    • ^{cd4>是矩形中每个像素的大小
    • z是距相机焦点的距离

    所以改写成上面的名字

    • dx=d0*xs/xs0[m]
    • dy=d0*ys/ys0[m]

    dx和{}应该是相同的,但是如果你的图像不是垂直的或者有其他的扭曲,那么它们就会有点不同。所以距离是它的平均值,最小值或最大值取决于安全原因。例如

    • d=0.5*(dx+dy)[m]

[注意事项]

距离是从摄像机的投影点开始测量的,所以如果你不知道它的位置,从已知点的2个已知距离上取一个矩形图像,然后计算焦距位置。。。在

相关问题 更多 >

    热门问题