如何获得图像中两点之间的实际距离?

时间:2015-03-11 12:34:27

标签: opencv

HI我使用opencv来检测帧中的两个对象并计算它们之间的距离,但是我需要计算它们之间的距离,你可以给出米与像素之间的关系

2 个答案:

答案 0 :(得分:1)

这通常是不可能的:从单个图像中,重建的3d点的比例是未知的。

您的选择要么

  1. 添加更多视图,并使用立体视觉算法计算深度。

  2. 使用有关物体大小的知识来确定距离。

  3. 修改

    根据深度z,相机校准矩阵K和图像点x,我们可以得到相应的3D点X

    X = z * inv(K) * x
    
    带有x

    是齐次坐标。

    当你在物体上有两个3D点时,计算距离是微不足道的。

答案 1 :(得分:0)

"谢谢我尝试使用尺寸,但我需要实际尺寸(以米为单位)与像素尺寸之间的关系,以及相机与物体之间的已知距离"

您需要做的是让对象在离相机一定距离处有问题并测量像素。然后,将此对象更远或更靠近相机移动,并再次测量更改像素。

由此可以确定像素变化的比率,该变化等于距离的变化,从而确定物体距相机的距离。它只是一个简单的微分方程。

假设有问题的物体的大小是固定的或缩放到用于计算比率的物体,这种方法应该粗略估计物体到相机的距离。

然后,您需要使用此比率来帮助计算物体之间的距离,因为当物体与相机的距离增加时,它与物体之间的距离会成反比。

然而,这种方法非常混乱,效率低下。更好的方法是使用两个不同的相机并观察Hannes提到的两者之间的差异