我正在尝试使用opencv编写一个程序来计算从网络摄像头到一英寸白色球体的距离。我觉得这应该很容易,但无论出于什么原因,我都会画空白。感谢提前帮助。寻找从相机到已知尺寸的物体的距离
回答
您可以使用三角形相似度来校准摄像机角度并找到距离。
你知道你的球大小:D
单位(如厘米)。将它放在相机前方已知距离Z
处,比如说1米= 100厘米,并以像素为单位测量其表观宽度。调用这个宽度d
。
然后f=d*Z/D
相机f
(这是相机与相机稍有不同)的焦距。
当用本相机再次看到此球,并且其表观宽度是d'
个像素,则通过三角相似,你知道f/d'=Z'/D
并且因此:Z'=D*f/d'
其中Z'
是来自摄像机的球的当前距离。
获取相机焦距不是问题吗?智能手机的摄像机标定不能以米为单位给出焦距,而是以x-y轴上的像素为单位。它们已乘以比例因子。 –
第一段说明如何以像素为单位获得焦距。三角形相似性本质上可以找到从像素到米的转换比例因子。 –
我明白你的意思了。但是,是不是简单地保留一个图像传感器尺寸和校准数据库关于同样数量的麻烦? –
在我看来,如果你想测量距离或其他东西(在真实世界中),你需要一个相机模型=校准模型。 针孔相机模型简单,线性,并提供良好的结果(但不会校正失真,(不管它们是径向还是切向)
如果您不使用它,那么您将能够计算视差深度图(例如,如果你使用立体视觉),但它是相对的,并不给你一个绝对的测量,只有背后是什么,在另一个物体前面是什么......
因此,我认为答案是:你需要以某种方式校准它,也许你可以要求用户将球体接近相机,直到所有图像平面完全被球填满,并且通过先前已知的球测量,您将能够然后计算距离...。
Julien,
- 1. OpenCV计算已知尺寸物体的距离
- 2. 相机和物体之间的距离?
- 3. 从相机到物体的距离..纠错
- 4. 如何在不知道物体和相机之间的距离的情况下从图像中获取物体的实际尺寸?
- 5. 如何找到华硕xtion亲相机OpenCV的物体距离,ROS
- 6. 相机与识别的“物体”之间的距离
- 7. 找到在matlab中从相机到消失点的距离
- 8. 获取相机与确切物体之间的距离
- 9. 如何用相机测量物体的距离?
- 10. Python:计算点距离N的距离尺寸线
- 11. Photoshop CS6物体尺寸
- 12. 如何确定哪个物体距离相机最近?
- 13. 如何找到已知GPS距离的GPS坐标?
- 14. 寻找完美四叉树的尺寸
- 15. 寻找在不同尺寸的矩阵
- 16. 我们如何测量物体和android手机相机之间的距离
- 17. 获取图像中物体的尺寸
- 18. 使用相机检测真实物体。使用相机寻找真实物体的可能性
- 19. 如何从已知物体的图片计算相机的位置/方向?
- 20. 相机传感器尺寸
- 21. 如何使用iPhone中的相机测量物体之间的距离?
- 22. 具有2个未知尺寸和1个已知尺寸的3D矢量
- 23. 从已知点到网络边缘的距离
- 24. 寻找距离最近的向量点
- 25. 寻找最近的驾车距离
- 26. 寻找距离最近的号码?
- 27. 寻找有效数字的距离
- 28. 使用kinect深度数据查找物体的实际尺寸
- 29. Android:相机的尺寸与屏幕尺寸不匹配
- 30. 使用opencv拍摄物体的距离
您是否尝试过“校准”您的系统?我的意思是,当球体距离摄像头50cm,1m,2m时,您可以测量像素大小,然后将实时测量结果与校准数据进行比较? –
这是一个好主意,但是如果我打算创建一个跨平台的应用程序,它将运行在各种不同的摄像头上,那么每个不同的摄像头是否需要它自己的校准?或者,相同质量的不同相机(比如说vga)会在每个距离处将球看作相同数量的像素吗? –
不幸的是,每个相机都需要校准,因为很少有相同的“视角”。有些是比其他更广角(缩放),例如在这里看到:http://www.tomshardware.com/reviews/webcam-quality-test-shootout,878-10.html。所以我明白这不是最好的解决方案。 –