如何从asus xtion pro摄像头opencv、ROS查找对象距离

如何从asus xtion pro摄像头opencv、ROS查找对象距离,opencv,distance,object-detection,ros,asus-xtion,Opencv,Distance,Object Detection,Ros,Asus Xtion,您好,我正在使用华硕xtion pro实时摄像头进行目标检测,我也是opencv新手。我正在试着获取物体与摄像机的距离。检测到的对象是二维图像。我不确定我应该用什么来获取信息,然后再进行计算,以获得相机和检测到的物体之间的距离。有人能告诉我吗 简而言之:你不能 您正在丢失深度信息,并且相机图像中的任何可见像素实际上都会转换为源自相机的光线 因此,一旦你在像素X处得到了一个对象,你所知道的就是该对象在某个地方与基于该像素和相机的内/外参数的向量投射相交 你需要更多的信息。以下其中一项应足够: 至少

您好,我正在使用华硕xtion pro实时摄像头进行目标检测,我也是opencv新手。我正在试着获取物体与摄像机的距离。检测到的对象是二维图像。我不确定我应该用什么来获取信息,然后再进行计算,以获得相机和检测到的物体之间的距离。有人能告诉我吗

简而言之:你不能

您正在丢失深度信息,并且相机图像中的任何可见像素实际上都会转换为源自相机的光线

因此,一旦你在像素X处得到了一个对象,你所知道的就是该对象在某个地方与基于该像素和相机的内/外参数的向量投射相交

你需要更多的信息。以下其中一项应足够:

至少知道3D点的一个坐标,例如,检测到的所有物体都在地面或某个已知平面上。 了解两个投影点之间的关系: 来自不同位置的相同点或已知摄影机移动/偏移 或者两个点之间有明显的距离,比如一些员工或酒吧的两端。 一旦你得到了其中一个,你就可以使用简单的三角法则来计算缺失的值


因为我最初错过了一个带有OpenNI兼容深度传感器的摄像头,通过在构建库时使用OPENNI定义预处理器,就可以构建支持OpenCV的库。

我不想成为打破这一点的人,但你要想用一个摄像头做的事情要么是不可能的,要么是极其困难的


你需要让相机移动,录制一段视频,然后使用一个摄像头。通常,3d信息是从两个不同地方拍摄的至少两张2d图像创建的。您还需要非常精确地知道两个图像之间的距离和旋转。常见的技术是两个摄像头之间的距离精确测量。

Xtion不是一个基本的网络摄像头。这是一个类似于Kinect和Primesense的立体视觉深度感应摄像头。这方面的主要API是OpenNI-see

哦,好的。所以,如果我在一个已知的平面上进行探测,比如固定尺寸的桌面,我就能找出距离,然后做类似的事情?如果您知道表格及其位置/方向,则可以使用该信息重建在同一平面上看到的任何物体的三维坐标,即,将来自摄影机的上述矢量与已知平面相交。这基本上就是在3DS上使用标记的增强现实游戏的工作原理。在这种情况下,已知对象/尺寸标记用于确定其他物体或地面的位置/方向。您好,您能告诉我如何找到已知平面坐标的教程吗?您必须自己定义它们。例如,将表的一个角设置为0,0。另一个可以是宽度、高度。一旦这些都完成了,就可以用简单的数学计算从摄像机到飞机的矢量之间的截获。。对不起打扰你了,但我还是不太明白。。是否有任何编码参考,我可以参考?我很难弄清楚。