数据可视化
// 点云可视化可以显示点云、网格、设置颜色、 连线
#include<pcl/io/pcd_io.h>
#include<pcl/io/ply_io.h>
#include<pcl/point_types.h>
// 包含相关的头文件
#include<pcl/visualization/pcl_visualizer.h>
typedef pcl::PointXYZ PointT;
int main() {
// 读取点云
pcl::PointCloud<PointT>::Ptr cloud1(new pcl::PointCloud<PointT>);
if (pcl::io::loadPCDFile("rabbit.pcd", *cloud1) == -1) {
PCL_ERROR("读取rabbit文件失败");
return -1;
}
pcl::PointCloud<PointT>::Ptr cloud2(new pcl::PointCloud<PointT>);
if (pcl::io::loadPCDFile("saveRabbit.pcd", *cloud2) == -1) {
PCL_ERROR("读取save文件失败");
return -1;
}
// 定义对象
pcl::visualization::PCLVisualizer viewer;
// 设置背景颜色、默认颜色
viewer.setBackgroundColor(100, 100, 100);
// 显示点云数据
//"cloud1"为显示id,默认cloud 显示多个点云时用默认会报警
viewer.addPointCloud(cloud1, "cloud1");
pcl::visualization::PointCloudColorHandlerCustom<PointT> red(cloud2, 255, 0, 0);
// 将点云设置颜色,默认白色
viewer.addPointCloud(cloud2, red, "cloud2");
//将两个点连线
PointT temp1 = cloud1->points[0];
PointT temp2 = cloud2->points[1];
//viewer.addLine(temp1, temp2, "line0");
// 设置线的颜色
viewer.addLine(temp1, temp2, 255, 0, 0, "line0");
// 显示网格数据
pcl::PolygonMesh mesh;
pcl::io::loadPLYFile("test.ply", mesh);
// 显示
// 阻塞式
viewer.spin();
// 非阻塞式
//while (!viewer.wasStopped())
//{
// viewer.spinOnce(100);
// std::this_thread::sleep_for(std::chrono::microseconds(100000));
//}
system("pause");
return 0;
}
参考链接:https://github.com/MNewBie/PCL-Notes/blob/master/chapter2.md
https://zhuanlan.zhihu.com/p/268524083