PCL安装
https://github.com/PointCloudLibrary/pcl/releases
安装的时候,选择Add PCL to the system PATH for all users,这样它就会在安装过程中将环境变量写入电脑。然后点击下一步,选择安装路径,之后就一路next就可以了。
选择Add PCL to the system PATH for all users
选择安装路径,安装在e盘(也可安装在其它盘),下一步
安装需要几分钟
安装完毕之后去系统环境变量中检查是否配置上了环境变量,此电脑—>右键属性—>高级系统设置—>环境变量—>在系统变量中的Path双击打开。环境变量配置如下:
在PCL 1.14.1\3rdParty文件夹下找不到OpenNI2\Redist,一般就在C盘的Program File下或者Program File(x86)下。可以自己去找一下,然后将OpenNI2文件拷贝到PCL 1.14.1\3rdParty文件夹下或者将OpenNI2卸载重装,然后再填写环境变量即可。
配置环境
使用VS打开程序,配置环境,debug版本如下,使用release版本更合适,
属性→VC++目录→包含目录
属性→VC++目录→库目录
预处理器定义
在这里插入图片描述
根据程序添加加上
_CRT_SECURE_NO_WARNINGS
NOMINMAX
添加附加依赖项
首先,要进行生成release或者debug下的lib库名,用于添加到链接器中。 分别在PCL1.14.1\3rdParty\OpenNI2\Lib; PCL1.14.1\3rdParty\VTK\lib;PCL1.14.1\lib文件夹下创建一个txt文件,如果使用release版本,txt文件中就写dir /b *.lib >release.txt,如果使用debug版本,txt文件中就写dir /b *.lib >debug.txt,然后改成bat文件,双击获得一个release.txt或者debug.txt文件。
pcl显示Demo
#include <iostream>
#include <pcl/io/pcd_io.h>
#include <pcl/point_types.h>
#include <pcl/visualization/pcl_visualizer.h>
int main(int argc, char** argv)
{
// 创建点云对象
pcl::PointCloud<pcl::PointXYZ>::Ptr cloud(new pcl::PointCloud<pcl::PointXYZ>);
// 读取PCD文件
if (pcl::io::loadPCDFile<pcl::PointXYZ>("test.pcd", *cloud) == -1)
{
std::cout << "Couldn't read file test.pcd" << std::endl;
return (-1);
}
// 创建可视化对象
pcl::visualization::PCLVisualizer viewer("3D Viewer");
viewer.setBackgroundColor(0, 0, 0); // 设置背景为黑色
viewer.addPointCloud<pcl::PointXYZ>(cloud, "sample cloud");
viewer.setPointCloudRenderingProperties(pcl::visualization::PCL_VISUALIZER_POINT_SIZE, 1, "sample cloud");
viewer.addCoordinateSystem(1.0);
viewer.initCameraParameters();
// 开始可视化
while (!viewer.wasStopped())
{
viewer.spinOnce(100);
}
return 0;
}
后期经过表面重建、着色如下图所示
报错
vector subscript out of range 是指vector下标越界,一般都是遍历下标出错导致越界访问。一般情况是就把循环边界写错
float zMin = std::numeric_limits::max(); 错误:应输入标识符,“(”:“::”右边的非法标记
方法一:添加NOMINMAX
方法二:
修正 float zMin = (std::numeric_limits::max)();
点云txt文件数据每一行以逗号或空格隔开,包含x y z或 x y z r g b,每行最后面的数不要跟逗号