PCL(Point Cloud Library)是在吸收了前人点云相关研究基础上建立起来的大型跨平台开源C++编程库,它实现了大量点云相关的通用算法和高效数据结构,涉及到点云获取、滤波、分割、配准、检索、特征提取、识别、追踪、曲面重建、可视化等。
支持多种 *** 作系统平台,可在Windows、Linux、Android、Mac OS X、部分嵌入式实时系统上运行。如果说OpenCV是2D信息获取与处理的结晶,那么PCL就在3D信息获取与处理上具有同等地位,PCL是BSD授权方式,可以免费进行商业和学术应用。
扩展资料
PCL利用OpenMP、GPU、CUDA等先进高性能计算技术,通过并行化提高程序实时性。K近邻搜索 *** 作的构架是基于FLANN (Fast Library for Approximate Nearest Neighbors)所实现的,速度也是目前技术中最快的。
PCL中的所有模块和算法都是通过Boost共享指针来传送数据的,因而避免了多次复制系统中已存在的数据的需要,从0.6版本开始,PCL就已经被移入到Windows,MacOS和Linux系统,并且在Android系统也已经开始投入使用,这使得PCL的应用容易移植与多方发布。
参考资料来源:百度百科-PCL
自己使用了pcl的程序在自己的电脑上运行正常,但是打包到其他的电脑上运行时报段错误(segmentation fault),然后使用gdb调试的时候,发现类似如下错误点:
无论你使用的是pcl的动态库( *.so )还是静态库( *.a ),就很奇怪:
自行编译pcl的时候,cmake会自动检测机器能进行的优化,然后可能会给编译器加上 -march=native 的编译选项, 进行 SSE 等适合本地机器的优化,能起到加速的作用。
指定了-march参数,gcc将不会再用兼容的指令去编译。
如果只是自己电脑用,没有什么问题,但是如果编译的库还要在其他的电脑上使用,如果其他的机器不具备这些优化的硬件,指令就执行不了,就会报 Illegal instruction 的错误,呈现在上面就是段错误(segmentation fault)
之所以上面的错误在别的电脑上还能知道自己电脑上特定文件的位置呢,因为PCL编译的时候默认的编译类型是 RelWithDebInfo ,这样编译出来的库是有调试信息的,所以能指向特定文件位置。
编译PCL的时候,如果只有自己使用,开启也没有关系,还能加速。
如果是编译公共库或者程序要在其他的机器上运行,建议不要开启SSE优化。
关闭SSE优化后的PCL的库(无论是动态库还是静态库),其他程序依赖之后就不会产生上面的 No such file or directory 的错误。
如果开启了。cmake的时候,中间输出信息中会有 Using CPU native flags for SSE optimization: -march=native 的输出,如下图所示
在PCL源码cmake文件夹下,有个pcl_options.cmake的文件
找到下面的内容。默认第二个时 ON,把它改成 OFF即可
首先要确认该驱动是否支持win7 32位,如果支持的话按照下列步骤执行。
在“开始”菜单中打开“设备和打印机”,如图
在“设备和打印机”窗口中点击“添加打印机”你会看到如图的警告框,提示不能安装打印机,怎么办呢?其实你是通一些优化软件将打印机的相关服务关闭了。
如图打开360安全卫士,在“优化加速”选项中选择“启动项”的“系统关键服务”
在“系统关键服务”下找到“打印机服务”并恢复此服务。
最后重启电脑即可。
欢迎分享,转载请注明来源:内存溢出
评论列表(0条)