首页 文章

使用Kinect和EMGU检索点 Cloud ?

提问于
浏览
1

我已经看过在从Kinect捕获的常规RGB图像上使用EMGUCV的例子,例如this,但是你可能还有一个网络摄像头 . 我有兴趣获得一个Point Cloud,我可以在以后用它来进行三角测量 .

我已经尝试'手动'将DepthFrame转换为点 Cloud 文件 . 在深度框架中,您有X,Y和深度值,我将其转换为.ply文件的XYZ点 . 结果是乱码和无用的 .

现在,我注意到EMGUCV有this method,它将点 Cloud 映射到EMGUCV Mat对象 . 我只是不知道语法应该如何用于此,因为没有人要求EMGUCV背后的人提供这个或任何提供的例子的例子 .

这是我尝试过的,Kinect似乎甚至没有打开,成功总是返回false .

public void test()
{
    KinectCapture kc = new KinectCapture(KinectCapture.DeviceType.Kinect, KinectCapture.ImageGeneratorOutputMode.Vga30Hz);
    Mat m = new Mat();
    bool success = kc.RetrievePointCloudMap(m);
}

我还遇到了一个问题,即它在构造KinectCapture对象期间一直抛出异常,this是我的解决方案 .

2 回答

  • 1

    你检查过Kinect SDK的功能吗?有很多功能可以让你轻松编写正确的点 Cloud - 只需使用Kinect SDK即可 .

  • 1

    如果你像我一样,你只是想获得一个可以变成网格的点 Cloud ,你自己并不想做所有花哨的数学 . 幸运的是,如果您编写500行代码,Fusion会为您执行此操作 . 微软的例子有很多失败检查,事件,布尔设置,图像以不同方式呈现,组合多点 Cloud 等等 . 许多不必要的(对我来说)代码 . 他们的例子是3800行代码 . 我试过把它剪下来,你可以进一步减少它 .

    我在这里粘贴它有些麻烦,因为它很长但是the link is here

    试着愚弄这些 Value 观,看看微软的Kinect Fusion Sample项目,它完全被“偷走”(99%) . 这将打开您的传感器,拍摄深度彩色图像并将其转换为网格 . 你如何保存它取决于你 . 我做了一个小的.ply-outputter类,他们也在他们的例子中提供了它 .

相关问题