pythonpcl教程_python-pcl安装和使⽤
安装
因为⼯作中要进⾏点云数据的显⽰,因此要安装python-pcl,⽹上搜了很多教程,但是安装中还是遇到很多问题,这⾥把⾃⼰遇到的和可能遇到的问题总结⼀下。
环境:Ubuntu:14.04 python:2.7.6 pcl:1.7.0
⽹上的安装⽅法如下:
⾸先安装PCL模块,我们要使⽤python-pcl依赖于PCL模块:
sudo apt-get install software-properties-common python-software-properties
sudo add-apt-repository ppa:v-launchpad-jochen-sprickerhof-de/pcl
sudo apt-get update
sudo apt-get install libpcl-all
然后是安装其他的依赖模块:
电脑python安装教程
sudo apt-get install python-pip
sudo apt-get install python-dev
sudo pip install Cython==0.25.2
sudo pip install numpy
sudo apt-get install git
cd python-pcl/
python setup.py build_ext -i
python setup.py install
最后两条命令在执⾏时提⽰权限问题需要加sudo,耗时较长,可能会遇到以下问题:
执⾏python setup.py build_ext -i时报错
cc1plus: warning: command line option ‘-Wstrict-prototypes’ is valid for C/ObjC but not for C++ [enabled by default]
virtual memory exhausted: ⽆法分配内存
error: command 'x86_64-linux-gnu-gcc' failed with exit status 1
⽹上的解决⽅法是创建⼀个⽂件这样的,我试了以下,问题没有解决。
执⾏python setup.py install时报错
cc1plus: warning: command line option ‘-Wstrict-prototypes’ is valid for C/ObjC but not for C++ [enabled by default]
#warning "Using deprecated NumPy API, disable it by " \
^
pcl/
x86_64-linux-gnu-gcc: internal compiler error: 已杀死 (program cc1plus)
Please submit a full bug report,
with preprocessed source if appropriate.
See for instructions.
error: command 'x86_64-linux-gnu-gcc' failed with exit status 4
我是参考这⾥。修改setup.py⽂件,添加以下内容:
import os
from distutils.sysconfig import get_config_vars
(opt,) = get_config_vars('OPT')
flag for flag in opt.split() if flag != '-Wstrict-prototypes'
)
可是依然报错!!
执⾏cmake时提醒版本过低:
按照这个进⾏升级,升级之后查看版本cmake --version⼜报错:
CMake Error: Could not find CMAKE_ROOT
十六进制算术运算CMake has most likely not been installed correctly.
Modules directory not found in
/usr/local/bin
bootstrap table统计汇总段错误 (核⼼已转储)
查原因说要卸载重装,于是卸掉cmake⼜重装。再次查看cmake版本,提⽰bash: /usr/bin/cmake: 没有那个⽂件或⽬录。因为直接使⽤cmake系统会到默认的/usr/bin中去寻,但是安装的cmake是在/usr/local/bin中,所以当然不会到,解决⽅法是做⼀个链接即可:ln -s /usr/local/bin/cmake /usr/bin。
执⾏make时报错:c++: internal compiler error: killed (program cc1plus),原因是系统没有交换分区, 编译过程中内存耗尽, 导致了编译中断,解决⽅式是增加⼀个交换分区:按照这个执⾏,命令前需要加sudo确保权限。然后再执⾏make命令。
上⾯就是按照⽹上的⼀些说明进⾏的,遇到问题就去查解决⽅法,但是最后也没装好python-pcl,于是转为按照官⽅的⽅法安装。
再次尝试
python-pcl的GitHub地址,下⾯对于不同操作系统、不同python版本需要安装的依赖和⽅法都有说明。我⽤的Ubuntu 14.04,根据这个说明我应该先安装:
Python 2.7.6, 3.4.0, 3.5.2
pcl 1.7.0
Cython <= 0.25.2
并且下⾯有安装pcl模块的命令:
sudo add-apt-repository ppa:v-launchpad-jochen-sprickerhof-de/pcl -y
sudo apt-get update -y
sudo apt-get install libpcl-all -y
然后是pip模块的安装:
pip install --upgrade pip
pip install cython==0.25.2
pip install numpy
最后是python-pcl模块的安装:
cd python-pcl
# 执⾏下⾯的两条命令之前可以先阅读⼀下下⾯的问题
python setup.py build_ext -i
python setup.py install
最后的耗时较长,执⾏完就算是安装好了,⾸先进⾏⼀下测试,在python程序中import pcl,如果没有问题,就表⽰安装成功了。
后续问题:
format的翻译安装完成后,运⾏例⼦,import pcl正常,但是pcl.pcl_visualization模块⽆法导⼊,按照这个尝试进⾏解决。
第556⾏根据vtk版本取消对应两⾏的注释,不清楚版本可以根据路径到对应⽬录下查看。取消第560和561⾏的注释:
ext_args['include_dirs'].append('/usr/include/vtk-5.8')
jquery自定义动画效果ext_args['library_dirs'].append('/usr/lib')
第615⾏if判断语句,根据PCL版本取消注释对应版本下的:
java开发吧Extension("pcl.pcl_visualization", ["pcl/pcl_visualization.pyx"], language="c++", **ext_args)
然后运⾏python程序,依然报ImportError: No module named pcl_visualization的错误,重新执⾏最后两条命令后模块导⼊正常。
使⽤
主要是通过python-pcl读取PCD点云⽂件并显⽰,通过pcl.load(filename.pcd)可以读取PCD⽂件的点云数据,然后通过
pcl.pcl_visualization将点云显⽰出来,具体代码可以查看⼀下⽹上的⽰例。
因为使⽤的数据是从雷达采集的数据⽣成的,有⼀些点的数值是异常的,在坐标系下的偏差很⼤,这样导致点云图上只形成了“两个点”。⽐如有10000个点,但是有1个点的值是有偏差的,这样在显⽰时,那9999个正常的点都聚集在了⼀起,于是可视化界⾯看到的就是“两个点”,因此在向PCD⽂件写⼊数据时要注意异常点的处理。
说道这⾥再介绍⼀下PCD⽂件,PCD⽂件是有固定格式的,包含头信息和数据信息,⽹上介绍的很详细,这⾥不再解释,只是要说⼀下⾥⾯的WIDTH、HEIGHT、POINTS三个参数。
对于有序点云,WIDTH表⽰点云数据集的宽度,HEIGHT表⽰数据集的⾼度,即点云的⾏列数,⼆者的乘积就是点云中点的数量,也就是POINTS的值。
对于⽆序点云,WIDTH代表了点云中点的个数,和POINTS参数的值相同,HEIGHT设置为1。
在使⽤python-pcl读取点云PCD⽂件时,要保证WIDTH和HEIGHT的值的乘积等于POINTS的值,并且和PCD⽂件中点的数量相等,否则会读取失败。在写PCD⽂件时,⼀般会先将点云的数⽬赋给WIDTH和POINTS,完成PCD⽂件头信息的内容。再写⼊数据信息时,异常点被处理掉不会写⼊,那么就会造成PCD⽂件点的数量和头信息的值不符,导致读取失败,要加以注意。
版权声明:本站内容均来自互联网,仅供演示用,请勿用于商业和其他非法用途。如果侵犯了您的权益请与我们联系QQ:729038198,我们将在24小时内删除。
发表评论