OpenCV计算与已知大小物体的距离

OpenCV calculate distance from object with known size

是否可以计算已知大小的物体的距离? 我想用一个直径为 7 厘米的球来做这个。现在,对于第一个计算,我将他放在距网络摄像头 30 厘米的位置,第二个是 50 厘米。 是否有线性函数或公式以某种方式计算距离? 让我们说在第一个测量中它有一个 6 像素的直径,而在第二个测量中只有 4 个像素。必须有一个公式吗?

此致

在光学方案中,您有两个相似的直角三角形,其边为 F(objective 焦距)、PixelSize、Distance 和 Size

    Distance / Size = F / PixelSize

所以有一些已知的Distance0的参数,你可以得到F(以像素为单位,将其视为某个常数)

   F = Distance0 * PixelSize0 / Size0

并用它来计算未知距离(直到缩放改变)

  Distance = F * Size / PixelSize

(请注意,您可以改变对象大小)