版权声明:本文为博主原创文章,未经博主允许不得转载。 https://blog.csdn.net/YunLaowang/article/details/86247642
PCL可视化资料多是基于Linux系统实现的,对于入门新手来说,如果想要在Windows系统中实现点云可视化,则免不了一番折腾。这里给出我在【Win10 x64+VS2015+PCL1.8.1】环境下实现的点云的可视化代码,并提供相关点云文件的下载链接,希望对新手有些许帮助。
方式一
- 代码
// 使用CloudViewer类:提供的方法较少,只能进行简单的显示
#include <iostream>
#include <pcl/io/io.h>
#include <pcl/point_types.h>
#include <pcl/io/pcd_io.h>
#include <pcl/visualization/cloud_viewer.h>
using namespace std;
using namespace pcl;
using namespace io;
int main() {
PointCloud<PointXYZ>::Ptr cloud(new PointCloud<PointXYZ>);// 生成用于存储点云的指针
if (io::loadPCDFile("maize.pcd", *cloud) == -1) { // 读取pcd文件,存储到cloud内
cerr << "can't read file maize.pcd" << endl;
return -1;
}
pcl::visualization::CloudViewer viewer("viewer");// 实例化CloudViewer对象
viewer.showCloud(cloud);
while (!viewer.wasStopped())// 保持窗口一直存在
{
}
return 0;
}
- 结果
方式二
- 代码
// 使用PCLVisualizer类:方法多、可进行多种操作
#include <iostream>
#include <pcl/point_types.h>
#include <pcl/io/ply_io.h>
#include <pcl/visualization/pcl_visualizer.h>
#include <pcl/io/io.h>
using namespace std;
using namespace pcl;
using namespace io;
int main() {
PointCloud<PointXYZ>::Ptr cloud(new PointCloud<PointXYZ>);
if (io::loadPLYFile("bunny.ply", *cloud) == -1) { // 读取.ply文件
cerr << "can't read file bunny.pcd" << endl;
return -1;
}
boost::shared_ptr<visualization::PCLVisualizer> viewer(new visualization::PCLVisualizer("3D viewer")); // 实例化PCLVisualizer对象,窗口命名为3D viewer
viewer->setBackgroundColor(0, 0, 0); // 设置背景颜色
// 主要方法
viewer->addPointCloud<PointXYZ>(cloud, "sample cloud"); // 将点云数据添加到视窗中
viewer->setPointCloudRenderingProperties(visualization::PCL_VISUALIZER_OPACITY, 2, "sample cloud");// 设置点云显示属性,
while (!viewer->wasStopped()) { // 保持窗口一直打开
viewer->spinOnce(100);
boost::this_thread::sleep(boost::posix_time::microseconds(1000));
}
return 0;
}
- 结果
备注
- 注意:方式一中,点云可能并不会出现在窗口中,导致窗口全黑,此时只要把鼠标放在窗口中心、滚动鼠标滚轮进行缩小即可。
- 点云文件下载链接:链接:https:?//pan?.baidu?.com/s/1APoeuyN0UmbYcw3mR5PtMg
提取码:nudz (删除?即可) - 完整的工程文件:CSDN下载链接