【问题标题】:Retrieving a Point Cloud using Kinect and EMGU?使用 Kinect 和 EMGU 检索点云?
【发布时间】:2017-02-27 16:08:09
【问题描述】:

我已经看到了使用 EMGUCV 对从 Kinect 捕获的常规 RGB 图像(如 this)使用的示例,但您还不如拥有一个网络摄像头。我有兴趣获得一个点云,以后可以将其用于三角测量。

我尝试“手动”将 DepthFrame 转换为点云文件。在深度框架中,您有 X、Y 和深度值,我将其转换为 .ply 文件的 XYZ 点。结果是乱码,没用。

现在,我注意到 EMGUCV 有 this method,它将点云映射到 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 是我的解决方案。

【问题讨论】:

    标签: c# opencv kinect emgucv


    【解决方案1】:

    您检查过 Kinect SDK 功能吗?有很多功能可以让您轻松编写适当的点云 - 只需使用 Kinect SDK。

    【讨论】:

      【解决方案2】:

      如果你和我一样,你只是对获得一个可以变成网格的点云感兴趣,你对自己做所有花哨的数学不感兴趣。幸运的是,只要您编写 500 行代码,Fusion 就可以为您做到这一点。 微软的例子有很多故障检查、事件、设置布尔值、以不同方式渲染图像、组合多个点云等。很多不必要的(对我来说)代码。他们的例子是 3800 行代码。 我已经尝试减少它,您可能可以进一步减少它。

      我在这里粘贴时遇到了一些麻烦,因为它很长,但是the link is here

      试着弄弄一下这些值,看看微软的 Kinect Fusion Sample 项目,它完全是从那里“偷来的”(99%)。这将打开您的传感器,拍摄深度+彩色图像并将其变成网格。如何保存它取决于您。我制作了一个小的 .ply-outputter 类,他们也在示例中提供了该类。

      【讨论】:

        猜你喜欢
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 2012-06-16
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        相关资源
        最近更新 更多