【问题标题】:Does libfreenect2 support Kinect v2libfreenect2 是否支持 Kinect v2
【发布时间】:2015-06-04 16:55:41
【问题描述】:

我必须在 Linux 中使用 Kinect v2 进行项目,并且正在寻找兼容的库。目前还不清楚Open Kinect项目是否已经破解了Kinect v2。

【问题讨论】:

    标签: c++ linux kinect openkinect


    【解决方案1】:

    是的,这个库适用于 kinect v2。此库 (libfreenect2) 不适用于您将使用 libfreenect 的旧 kinect (360)

    在此处阅读项目页面:https://github.com/OpenKinect/libfreenect2

    【讨论】:

    • 我知道它是为 Kinect v2 使用的,但它真的有效吗?
    • 是的,它有效。你可以在 youtube 上看到一些示例,甚至可以看到一个人用 ubuntu 连接一个 nvidia Jetson 设备的教程youtube.com/watch?v=clUrdBC4KTQ
    【解决方案2】:

    是的,它支持 Kinect V2,你可以从这里安装它 https://github.com/OpenKinect/libfreenect2

    但是,请记住它不会为您提供关节和骨骼信息。如果您需要在 Linux 中从 Kinect V2 接收这些数据,有一些适用于 OpenNI 和 NiTE 的驱动程序可以让您从 Kinect 接收这些数据。请查看此线程以获取更多信息: https://github.com/OpenKinect/libfreenect2/issues/243

    【讨论】:

      【解决方案3】:

      是的,libfreenect2 仅适用于 Kinect V2。但要知道的重要一点是 Kinect v2 仅适用于 USB 3.0(我猜是更多),如果您想在同一个网络上使用多个 kinect,您可能会遇到一些问题。 here你可以找到API。此外,您可以查看this 以获得一些帮助。代码中最重要的部分是以下几行:

          #include "libfreenect2/libfreenect2.hpp"
          #include "libfreenect2/frame_listener_impl.h"
          #include "libfreenect2/registration.h"
      
          libfreenect2::Freenect2 freenect2;
          libfreenect2::Freenect2Device *dev = nullptr;
          libfreenect2::SyncMultiFrameListener *listener;
          libfreenect2::Registration* registration;
      
              listener = new libfreenect2::SyncMultiFrameListener(libfreenect2::Frame::Color | libfreenect2::Frame::Depth);
              dev->setColorFrameListener(listener);
              dev->setIrAndDepthFrameListener(listener);
      
              dev->start();
              registration = new libfreenect2::Registration(dev->getIrCameraParams(), dev->getColorCameraParams());
      

      然后循环:

      libfreenect2::FrameMap frames;
              libfreenect2::Frame undistorted(512, 424, 4), registered(512, 424, 4), depth_remap(1920, 1082, 4);
      
              listener->waitForNewFrame(frames);
              //capture
              libfreenect2::Frame *bgrx = frames[libfreenect2::Frame::Color];
              libfreenect2::Frame *depth = frames[libfreenect2::Frame::Depth];
      
              registration->apply(bgrx, depth, &undistorted, &registered, true, &depth_remap);
      

      registration->在彩色图像上应用重新映射深度图。

      【讨论】:

        猜你喜欢
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 2013-12-07
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        相关资源
        最近更新 更多