PCL点云显示

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,每行最后面的数不要跟逗号

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值