點雲視覺化方法——PCLVisualizer
阿新 • • 發佈:2019-02-11
3D點雲視覺化可以通過rviz,cloud_viewer或者PCLVisualizer等方法進行視覺化,這些介紹PCLVisualizer的方法。
首先是載入點雲並顯示:
#include <iostream> #include <pcl/visualization/pcl_visualizer.h> int main(int argc, char **argv) { int showpoint = 0; pcl::visualization::PCLVisualizer *viewer; //boost::shared_ptr<pcl::visualization::PCLVisualizer> viewer (new pcl::visualization::PCLVisualizer ("3D Viewer")); viewer = new pcl::visualization::PCLVisualizer("Cluster viewer"); viewer->createViewPort (0.0, 0, 0.5, 1.0, showpoint); viewer->setBackgroundColor(0, 0, 0); pcl::PointCloud<pcl::PointXYZ>:: Ptr cloud(new pcl::PointCloud<pcl::PointXYZ>); pcl::io::loadPCDFile ("/home/victor/catkin_ws/src/chapter6_tutorials/data/cup.pcd", *cloud); for(int i=0;i<cloud->size();i++) { cloud->points[i].x=cloud->points[i].x/100.; cloud->points[i].y=cloud->points[i].y/100.; cloud->points[i].z=cloud->points[i].z/100.; //std::cout << cloud.points[i].x << std::endl; } viewer->addPointCloud<pcl::PointXYZ> (cloud, "Cluster viewer",showpoint); viewer->spin(); //這行必須有,不然不會顯示點雲 return 0; }
建立點雲並顯示:
#include <iostream> #include <pcl/visualization/pcl_visualizer.h> int main(int argc, char **argv) { int showpoint = 0; //pcl::visualization::PCLVisualizer *viewer; boost::shared_ptr<pcl::visualization::PCLVisualizer> viewer (new pcl::visualization::PCLVisualizer ("3D Viewer")); //viewer = new pcl::visualization::PCLVisualizer("Cluster viewer"); viewer->createViewPort (0.0, 0, 0.5, 1.0, showpoint); viewer->setBackgroundColor(0, 0, 0); pcl::PointCloud<pcl::PointXYZ> cloud; //pcl::io::loadPCDFile ("/home/victor/catkin_ws/src/chapter6_tutorials/data/cup.pcd", cloud); cloud.height = 100; cloud.width = 100; cloud.points.resize(cloud.height * cloud.width); for(int i = 0; i < cloud.points.size(); i++){ cloud.points[i].x = 1024 * rand () / (RAND_MAX + 1.0f); cloud.points[i].y = 1024 * rand () / (RAND_MAX + 1.0f); cloud.points[i].z = 1024 * rand () / (RAND_MAX + 1.0f); } for(int i=0;i<cloud.size();i++) { cloud.points[i].x=cloud.points[i].x/10.; cloud.points[i].y=cloud.points[i].y/10.; cloud.points[i].z=cloud.points[i].z/10.; //std::cout << cloud.points[i].x << std::endl; } viewer->addPointCloud<pcl::PointXYZ> (cloud.makeShared(), "Cluster viewer",showpoint); viewer->spin(); return 0; }