参考链接
#include
#include
#include
#include
using namespace pcl;
class dummyClass{
public:
dummyClass();
~dummyClass(){};
void keyboardEventOccurred (const visualization::KeyboardEvent &event, void* junk);
pcl::PointXYZ randomPoint();
void spin();
private:
boost::shared_ptr viewer;
pcl::PointCloud::Ptr pc;
};
dummyClass::dummyClass(){
// Create viewer
viewer.reset(new pcl::visualization::PCLVisualizer ("3D Viewer"));
viewer->addCoordinateSystem(1);
viewer->addText("Press r to add a random point", 30, 10, 15, 1.0f,0.0f,0.0f,"text");
// Create cloud
pc.reset(new pcl::PointCloud());
pc->push_back(randomPoint());
viewer->addPointCloud(pc,"cloud");
viewer->setPointCloudRenderingProperties(pcl::visualization::PCL_VISUALIZER_POINT_SIZE, 5,"cloud");
// Register Keyboard Event
viewer->registerKeyboardCallback(&dummyClass::keyboardEventOccurred,*this);
};
void dummyClass::keyboardEventOccurred (const visualization::KeyboardEvent &event, void* junk){
if (event.getKeySym() == "r" && event.keyDown()){
pc->push_back(randomPoint());
viewer->updatePointCloud(pc,"cloud");
}
};
pcl::PointXYZ dummyClass::randomPoint(){
pcl::PointXYZ pt;
pt.x = (double)rand() / RAND_MAX *10 - 5;
pt.y = (double)rand() / RAND_MAX *10 - 5;
pt.z = (double)rand() / RAND_MAX *10 - 5;
return pt;
};
void dummyClass::spin(){
viewer->spin();
};
int
main (int argc, char** argv)
{
dummyClass dc;
dc.spin();
return 0;
}