PCL 我用的最多的可视化代码
记录下那些年折腾过的代码
源代码就是PCL教程上的,优秀,根据源代码改编就可以用了,毕竟我这样的C++渣渣也能写出来了
#include <pcl/ModelCoefficients.h>
#include <pcl/point_types.h>
#include <pcl/io/pcd_io.h>
#include <pcl/filters/extract_indices.h>
#include <pcl/filters/voxel_grid.h>
#include <pcl/features/normal_3d.h>
#include <pcl/kdtree/kdtree.h>
#include <pcl/visualization/cloud_viewer.h>
#include <pcl/segmentation/extract_clusters.h>
#include <pcl/io/io.h>
#include<time.h>
#include <pcl/filters/approximate_voxel_grid.h>
头文件不用管,为了方便常用的我都塞进去了
int
main(int argc,char** argv)
{
这是最简单的直接读取文件的方式
pcl::PointCloud<pcl::PointXYZ>::Ptr cloud (new pcl::PointCloud<pcl::PointXYZ>);
pcl::io::loadPCDFile<pcl::PointXYZ>( "backpack.pcd",*cloud)==-1;//*打开点云文件
pcl::PCDReader reader;
pcl::PCDWriter writer;
//这里用的 visualization 类
pcl::visualization::PCLVisualizer viewer("3D Viewer");
viewer.setBackgroundColor(255, 255, 255);
//有的时候出图需要带颜色 ,这里是给点云添加颜色 ,RGB就行
pcl::visualization::PointCloudColorHandlerCustom<pcl::PointXYZ>cloud_color(filtered_cloud, 0, 0, 0);
viewer.addPointCloud(filtered_cloud, cloud_color, "cloud");
//这里添加多个文件,并且每个文件随机显示不同的颜色,点云教程还是很管用的,学到不少
/* for (int i = 1; i <=25; i++)
{
std::stringstream gg;
gg << i << ".pcd";
//gg << "cloud_cluster_"<<i << ".pcd";
reader.read<pcl::PointXYZ>(gg.str(), *cloud, false);
pcl::visualization::PointCloudColorHandlerRandom<pcl::PointXYZ> randomColor(cloud);
viewer.addPointCloud(cloud, randomColor, gg.str());
}
pcl::visualization::PointCloudColorHandlerRandom<pcl::PointXYZ> randomColor(cloud);
viewer.addPointCloud(cloud, randomColor);
*/
//viewer.showCloud(cloud);
while (!viewer.wasStopped())
{
viewer.spinOnce();
}
return 0;
}
过了好长时间才知道,运行代码还有一种方式。
编译程序,生成.exe文件后
运行cmd
到对应文件夹下运行
完成!