用的是openni2graber,多了个2.。。
注意,这里的interface1 变量。为什么多了个1呢,原因是interface1是windows系统的保留字。。
#include "stdafx.h"
#include <pcl/io/openni2_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* interface1 = new pcl::io::OpenNI2Grabber();
boost::function<void(const pcl::PointCloud<pcl::PointXYZ>::ConstPtr&)> f =
boost::bind(&SimpleOpenNIViewer::cloud_cb_, this, _1);
interface1->registerCallback(f);
interface1->start();
while (!viewer.wasStopped())
{
boost::this_thread::sleep(boost::posix_time::seconds(1));
}
interface1->stop();
}
pcl::visualization::CloudViewer viewer;
};
int main()
{
SimpleOpenNIViewer v;
v.run();
return 0;
}