我正在尝试使用opencv编写程序来计算从网络摄像头到1英寸白色球体的距离。我觉得这应该很容易,但无论出于何种原因,我都是空白。谢谢你提前帮忙。
答案 0 :(得分:23)
您可以使用三角形相似度来校准摄像机角度并找到距离
你知道你的球的大小:D
单位(例如厘米)。将其放置在相机前面的已知距离Z
,比如1米= 100厘米处,并以像素为单位测量其表观宽度。将此宽度称为d
然后,相机f
的焦距(相机与相机略有不同)为f=d*Z/D
。
当你用这台相机再次看到这个球时,它的表观宽度是d'
像素,那么通过三角形的相似性,你知道f/d'=Z'/D
因此:Z'=D*f/d'
其中{{1球是当前距离相机的距离。
答案 1 :(得分:0)
在我看来,如果你想测量距离或其他东西(在现实世界中),你需要一个相机模型=校准模型。 针孔相机模型简单,线性且效果良好(但不能校正失真,(无论是径向还是切向)。
如果你不使用它,那么你将能够计算视差深度图,(例如,如果你使用立体视觉),但它是相对的,并没有给你一个绝对的测量,只有什么是落后于另一个对象的前方......
因此,我认为答案是:你需要以某种方式校准它,也许你可以要求用户接近球体到相机,直到所有的图像平面完全充满球,并且先前已知的球测量,你将能够计算距离......
于连