PCL中的OpenNI采集卡框架(The OpenNI Grabber Framework in PCL)

本文介绍了如何在PCL中利用OpenNI框架从兼容相机获取数据流,如Primesense、Kinect和Asus Xtion Pro。通过简单的代码示例展示了设置和使用OpenNI Grabber的方法,强调了数据同步和中断流的功能。此外,文章还讨论了可能出现的错误和解决方案。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

从PCL 1.0开始,我们提供了一个新的通用采集卡接口,以提供对不同设备及其驱动程序,文件格式和其他数据源的顺利和方便的访问。

我们加入的第一个驱动程序是new OpenNI Grabber,它可以轻松地从OpenNI兼容的相机请求数据流。本教程介绍如何设置和使用抓取器,因为它非常简单,所以我们可以保持简短:)。

目前我们测试的相机是Primesense Reference Design,Microsoft Kinect和Asus Xtion Pro相机:

_images / openni_cams.jpg

#简单的例子
在可视化(visualization)中,有一段非常短的代码,其中包含了设置pcl::PointCloud<XYZ>pcl::PointCloud<XYZRGB> 云回调所需的全部代码。

下面是使用OpenNI GrabberPCL OpenNI Viewer的屏幕截图和视频。

_images/pcl_openni_viewer.jpg

Youtube视频

让我们看看代码,来自visualization/tools/openni_viewer_simple.cpp

#include <pcl/io/openni_grabber.h>
#include <pcl/visualization/cloud_viewer.h>

class SimpleOpenNIViewer
{
  public:
    SimpleOpenNIViewer () : viewer ("PCL OpenNI Viewer") {}

    void cloud_cb_ (const pcl::PointCloud<pcl::PointXYZ>::ConstPtr &cloud)
    {
      if (!viewer.wasStopped())
        viewer.showCloud (cloud);
    }

    void run ()
    {
      pcl::Grabber* interface = new pcl::OpenNIGrabber();

      boost::function<void (const pcl::PointCloud<pcl::PointXYZ>::ConstPtr&)> f =
        boost::bind (&SimpleOpenNIViewer::cloud_cb_, this, _1);

      interface->registerCallback (f);

      interface->start ();

      while (!viewer.wasStopped())
      {
        boost::this_thread::sleep (boost:
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值