【问题标题】:Get Depth at Color position, Kinect SDK获取颜色位置的深度,Kinect SDK
【发布时间】:2012-08-10 13:22:58
【问题描述】:

我正在寻找方法(尽可能快地)从 Kinect 相机获取颜色像素的相应深度。

我找到了 MapDepthFrameToColorFrame 函数。但这只会给我某个深度位置的颜色,我想要相反的颜色。

我想要这个的原因是我将能够单击 RGB 图像上的一个位置并获得该像素的位置。

有没有比遍历 MapDepthFrameToColorFrame 的所有结果更快的方法?

【问题讨论】:

    标签: wpf kinect emgucv


    【解决方案1】:

    这里的问题是,由于相机和红外发射器的定位方式,并非每个颜色像素都会分配给它的深度。如果您面对 Kinect 并将左手举在胸前,则您的胸部有一部分不会有深度数据,因为您的手挡住了 IR 发射器。由于 IR 摄像头更接近 RGB 摄像头,因此从深度到 RGB 通常不会出现同样的问题;如果 Kinect 可以看到 IR,那么它可以看到 RGB。

    回答您的问题:我不知道有什么方法可以做到这一点,因为 RGB 指数没有为您提供足够的信息来计算深度指数。您是否尝试过使用 MapDepthFrameToColorFrame 并像您提到的那样循环?除非您像疯子(或计算机)一样点击,否则我敢打赌该应用程序将能够很好地处理这个问题。在您确定它会导致问题之前,我不会花时间尝试优化它。

    如果您愿意,您可以尝试通过检查函数返回的颜色坐标的子集来减小循环的大小。获取 RGB 像素 (x, y) 的坐标,然后检查 (x,y) 附近某处的深度坐标。也许 (x-20, y-20) 到 (x+20, y+20)。如果找不到它,您可以检查阵列的其余部分。对此进行一些测试,您可能会找到一个很好的范围来检查请求的像素,在大多数情况下您会受到打击,而不会出现很多循环。

    【讨论】:

    • 感谢您的精彩解释。我真的需要这个快点,因为它会在每帧更新(~30/秒)时更新。但是使用“近像素”的技巧确实奏效了!
    猜你喜欢
    • 2013-04-02
    • 1970-01-01
    • 1970-01-01
    • 2013-01-06
    • 1970-01-01
    • 2016-05-17
    • 1970-01-01
    • 2013-11-24
    • 1970-01-01
    相关资源
    最近更新 更多