我正在寻找(尽可能快)从Kinect相机获得相应深度到彩色像素的方法.
我找到了MapDepthFrameToColorFrame函数.但这只能给我一定深度位置的颜色,我想要相反.
我想要这个的原因是我将能够点击RGB图像上的位置并获得该像素的位置.
有没有办法比循环MapDepthFrameToColorFrame的所有结果更快地完成此操作?
这里的问题是,由于相机和红外发射器的定位方式,并非每个颜色像素都会分配深度.如果您正面对Kinect并将左手握在胸前,那么您胸部的一部分将无法获得深度数据,因为您的手阻挡了IR发射器.由于红外摄像机距离RGB摄像机较近,因此从深度到RGB一般不会出现同样的问题.如果Kinect可以看到IR,它可以看到RGB.
回答你的问题:我不知道有任何办法这样做,因为RGB索引没有给你足够的信息来计算深度索引.您是否尝试使用MapDepthFrameToColorFrame并像您提到的那样循环?除非你像疯子(或电脑)一样点击,否则我愿意打赌应用程序能够很好地处理这个问题.我不会花时间尝试优化它,直到你确定它会导致问题.
如果您愿意,可以通过检查函数返回的颜色坐标的子集来尝试减小循环的大小.获取RGB像素(x,y)的坐标,然后检查接近(x,y)的深度坐标.也许(x-20,y-20)到(x + 20,y + 20).如果找不到,可以检查数组的其余部分.稍微测试一下,你可以找到一个很好的范围来检查所请求的像素,你会在大多数时间内获得命中,没有大量的循环.
| 归档时间: |
|
| 查看次数: |
1647 次 |
| 最近记录: |