《PCL点云库学习&VS2010(X64)》Part 29 PCL使用类成员函数作为pclvisualizer的回调函数

来源:互联网 发布:ubuntu 目录大小 编辑:程序博客网 时间:2024/05/21 03:59

《PCL点云库学习&VS2010(X64)》Part 29 PCL使用类成员函数作为pclvisualizer的回调函数

参考资料1
参考资料2

代码:
#include <pcl/point_types.h>#include <pcl/point_cloud.h>#include <pcl/point_representation.h>#include <pcl/visualization/pcl_visualizer.h>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<pcl::visualization::PCLVisualizer> viewer;     pcl::PointCloud<pcl::PointXYZ>::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<pcl::PointXYZ>());     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; }


0 0
原创粉丝点击