Wpf 获取颜色位置的深度,Kinect SDK

Wpf 获取颜色位置的深度,Kinect SDK,wpf,kinect,emgucv,Wpf,Kinect,Emgucv,我正在寻找一种方法(尽可能快地)从Kinect相机获得相应的彩色像素深度 我找到了MapDepthFrameToColorFrame函数。但这只会给我在某个深度位置的颜色,我想要相反的颜色 我想这样做的原因是,我将能够在RGB图像点击一个位置,并获得该像素的位置 有没有比从MapDepthFrameToColorFrame循环所有结果更快的方法呢?这里的问题是,由于相机和红外发射器的定位方式,并非每个颜色像素都有一个指定的深度。如果你面对Kinect,左手举在胸前,你的胸部有一部分没有深度数据,

我正在寻找一种方法(尽可能快地)从Kinect相机获得相应的彩色像素深度

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

我想这样做的原因是,我将能够在RGB图像点击一个位置,并获得该像素的位置


有没有比从MapDepthFrameToColorFrame循环所有结果更快的方法呢?

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

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


如果愿意,可以通过检查函数返回的颜色坐标子集来尝试减少循环的大小。获取RGB像素的坐标(x,y),然后检查接近(x,y)的位置的深度坐标。可能是(x-20,y-20)到(x+20,y+20)。如果找不到,可以检查阵列的其余部分。对此进行一点测试,您可能会找到一个很好的范围来检查所请求的像素,这样您在大多数情况下都会获得成功,而不会出现很多循环。

谢谢您的解释。我真的需要这个去快,因为它将在每帧更新(~30/秒)更新。但是使用“近像素”的技巧确实奏效了!