14

我正在尝试使用 opencv 编写一个程序来计算从网络摄像头到一英寸白色球体的距离。我觉得这应该很容易,但无论出于何种原因,我都在画一个空白。感谢您提前提供帮助。

4

2 回答 2

26

您可以使用三角形相似度来校准相机角度并找到距离。
你知道你的球的大小:D单位(例如厘米)。将其放置在已知距离处Z,例如 1 米 = 100 厘米,在相机前面并测量其表观宽度(以像素为单位)。称这个宽度d
相机的焦距f(从相机到相机略有不同)然后是f=d*Z/D

当你用这个相机再次看到这个球时,它的表观宽度是d'像素,然后通过三角形相似度,你知道了f/d'=Z'/D,因此:球与相机的当前距离在Z'=D*f/d'哪里。Z'

于 2011-07-25T08:02:29.970 回答
1

在我看来,如果你想测量距离或其他东西(在现实世界中),你将需要一个相机模型 = 一个校准模型。针孔相机模型简单、线性且效果良好(但不会校正失真(无论是径向还是切向)。

如果您不使用它,那么您将能够计算视差深度图(例如,如果您使用立体视觉),但它是相对的,并没有给您一个绝对的测量值,只有后面是什么和什么在另一个物体前面......

因此,我认为答案是:您需要以某种方式对其进行校准,也许您可​​以要求用户将球体靠近相机,直到所有图像平面都完全被球填充,并且事先知道球测量,然后您将能够计算距离....

朱利安,

于 2011-07-16T08:57:29.290 回答