嗨,我正在使用华硕 xtion pro 实时摄像头进行对象检测,我也是 opencv 的新手。我试图从相机中获取物体的距离。检测到的对象在 2d 图像中。我不确定我应该使用什么来获取信息,然后进行计算以获取相机和检测到的物体之间的距离。有人可以给我建议吗?
问问题
1900 次
3 回答
0
简而言之:你不能。
您正在丢失深度信息,并且相机图像中的任何可见像素基本上都会转换为源自相机的光线。
因此,一旦您在像素 X 处获得了一个对象,您所知道的就是该对象在某处与基于该像素和相机的内在/外在参数的矢量投射相交。
您基本上需要更多信息。以下其中一项就足够了:
- 至少知道 3D 点的一个坐标(例如,检测到的所有东西都在地面上或某个已知平面上)。
- 知道两个投影点之间的关系:
- 来自不同位置的同一点(已知的相机移动/偏移)
- 或它们之间有很大距离的两个点(如某些五线谱或酒吧的两端)。
一旦你得到了任何一个,你就可以使用简单的三角函数(三规则)来计算缺失值。
由于我最初错过了这是一个具有 OpenNI 兼容深度传感器的相机,因此可以通过WITH_OPENNI
在构建库时定义预处理器来构建支持它的 OpenCV。
于 2014-11-02T08:38:17.737 回答
0
我不喜欢成为打破这个对你来说的人,但你想要做的事情要么是不可能的,要么是用单个相机极其困难的。
您需要让相机移动,录制视频并使用诸如此类的复杂技术。通常 3d 信息是从至少 2 个从 2 个不同地方拍摄的 2d 图像创建的。您还需要非常准确地知道两个图像之间的距离和旋转。常见的技术是使用 2 个摄像头,并在两者之间精确测量距离。
于 2014-11-02T08:38:29.590 回答
0
Xtion 不是基本的网络摄像头。它是一种类似于 Kinect 和 Primesense 的立体深度感应凸轮。主要的 API 是 OpenNI - 请参阅http://structure.io/openni。
于 2014-11-03T03:58:04.553 回答