【发布时间】:2014-12-29 02:48:21
【问题描述】:
您好,我正在使用华硕 xtion pro 实时摄像头进行对象检测,我也是 opencv 新手。我试图从相机中获取物体的距离。检测到的对象在 2d 图像中。我不确定我应该使用什么来获取信息,然后进行计算以获取相机和检测到的物体之间的距离。有人可以给我建议吗?
【问题讨论】:
标签: opencv distance object-detection ros asus-xtion
您好,我正在使用华硕 xtion pro 实时摄像头进行对象检测,我也是 opencv 新手。我试图从相机中获取物体的距离。检测到的对象在 2d 图像中。我不确定我应该使用什么来获取信息,然后进行计算以获取相机和检测到的物体之间的距离。有人可以给我建议吗?
【问题讨论】:
标签: opencv distance object-detection ros asus-xtion
简而言之:你不能。
您正在丢失深度信息,并且您的相机图像中的任何可见像素基本上都会转换为来自您的相机的光线。
因此,一旦您在像素 X 处获得了一个对象,您所知道的就是该对象在某处与基于该像素和相机的内在/外在参数的矢量投射相交。
您基本上需要更多信息。以下其中一项就足够了:
一旦你得到了任何一个,你就可以使用简单的三角函数(三法则)来计算缺失值。
由于我最初错过了它是具有 OpenNI 兼容深度传感器的相机,因此可以通过在构建库时定义预处理器定义 WITH_OPENNI 来构建支持该功能的 OpenCV。
【讨论】:
我不喜欢成为向你破坏这一切的人,但你想要做的事情要么是不可能的,要么是用单个相机极其困难的。
您需要让相机移动,录制视频并使用complex technique such as this。通常 3d 信息是从至少 2 个从 2 个不同地方拍摄的 2d 图像创建的。您还需要非常准确地知道两个图像之间的距离和旋转。常见的技术是使用 2 个摄像头,并精确测量两者之间的距离。
【讨论】:
Xtion 不是基本的网络摄像头。它是一种类似于 Kinect 和 Primesense 的立体深度感应凸轮。用于此的主要 API 是 OpenNI - 请参阅 http://structure.io/openni。
【讨论】: