如何从asus xtion pro camera opencv,ROS中找到物距

时间:2014-11-02 08:27:46

标签: opencv distance object-detection ros asus-xtion

您好我正在使用asus xtion pro live相机进行物体检测,我也是opencv的新手。我试图从相机获得物体的距离。检测到的对象是2d图像。我不确定我应该使用什么来获取信息然后跟进计算以检测相机和物体之间的距离。有人可以告诉我吗?

3 个答案:

答案 0 :(得分:0)

简而言之:你做不到。

您丢失了深度信息,相机图像中的任何可见像素基本上都会转换为来自相机的光线。

所以一旦你在像素X上得到一个物体,你所知道的就是物体在某处与基于这个像素的矢量投射和相机的内在/外在参数相交。

您基本上需要更多信息。以下之一应该足够了:

  • 至少知道3D点的一个坐标(例如,检测到的一切都在地面或某个已知平面上)。
  • 了解两个预测点之间的关系:
    • 来自不同位置的相同点(已知的相机移动/偏移)
    • 或两点之间距离很远(如某些工作人员或酒吧的两端)。

一旦你得到了,你就可以使用简单的三角法(三个规则)来计算缺失值。


由于我最初错过了这款带有OpenNI兼容深度传感器的相机,因此在构建库时可以通过定义预处理器定义WITH_OPENNI来构建支持OpenCV的OpenCV。

答案 1 :(得分:0)

我不想成为那个打破这个的人,但是你想做的事情要么是不可能的,要么是用一台相机非常困难。

您需要让相机移动,录制视频并使用complex technique such as this。通常,从2个不同地方拍摄的至少2个2d图像创建3d信息。您还需要非常准确地知道两个图像之间的距离和旋转。常见的技术是让两台摄像机在两者之间精确测量距离。

答案 2 :(得分:0)

Xtion不是基本的网络摄像头。它是一个类似于Kinect和Primesense的立体视觉深度感应凸轮。这方面的主要API是OpenNI - 请参阅http://structure.io/openni