点云可视化方法——PCLVisualizer

来源:互联网 发布:域名分级 编辑:程序博客网 时间:2024/06/18 13:25

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;}



原创粉丝点击