【问题标题】:how to find object distance from asus xtion pro camera opencv, ROS如何找到华硕xtion pro相机opencv,ROS的物距
【发布时间】:2014-12-29 02:48:21
【问题描述】:

您好,我正在使用华硕 xtion pro 实时摄像头进行对象检测,我也是 opencv 新手。我试图从相机中获取物体的距离。检测到的对象在 2d 图像中。我不确定我应该使用什么来获取信息,然后进行计算以获取相机和检测到的物体之间的距离。有人可以给我建议吗?

【问题讨论】:

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


    【解决方案1】:

    简而言之:你不能。

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

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

    您基本上需要更多信息。以下其中一项就足够了:

    • 至少知道 3D 点的一个坐标(例如,检测到的所有物体都在地面上或某个已知平面上)。
    • 了解两个投影点之间的关系:
      • 来自不同位置的同一点(已知的摄像机移动/偏移)
      • 或它们之间有很大距离的两个点(如某些五线谱或杆的两端)。

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


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

    【讨论】:

    • 哦,好吧。因此,如果我要在已知平面上进行检测,例如具有固定尺寸的桌面,我将能够找出距离并做类似的事情? youtube.com/watch?v=35rbeE1c-D4
    • 如果您知道表格及其位置/方向,那么您可以使用该信息来重建您“看到”在同一平面上的任何东西的 3D 坐标(即,您与源自已知平面的相机)。这基本上就是带有标记的增强现实游戏(例如在 3DS 上)的工作原理。已知对象/尺寸(标记)用于确定其他物体(本例中为桌子或地面)的位置/方向。
    • 嗨,你能指导我学习如何找到已知平面坐标的教程吗?
    • 您必须自己定义它们。例如,将表格的一个角设置为 (0, 0)。另一个可以是(宽度,高度)。完成这些之后,就可以通过简单的数学运算来计算源自相机的向量与该平面之间的截距。
    • Erm.. 很抱歉打扰您,但我还是不太明白.. 有什么编码参考可以参考吗?我很难弄清楚。
    【解决方案2】:

    我不喜欢成为向你破坏这一切的人,但你想要做的事情要么是不可能的,要么是用单个相机极其困难的。

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

    【讨论】:

      【解决方案3】:

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

      【讨论】:

        猜你喜欢
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 2012-12-30
        • 1970-01-01
        • 2013-11-25
        • 2015-07-01
        相关资源
        最近更新 更多