从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 Grabber
的PCL OpenNI Viewer
的屏幕截图和视频。
_images/pcl_openni_viewer.jpg
让我们看看代码,来自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: