方法1
conda install -c sirokujira python-pcl --channel conda-forge
尝试过后不行,找不到包
方法2:
pip install python-pcl
在import pcl的时候会出错:
ImportError: libpcl_keypoints.so.1.7: cannot open shared object file: No such file or directory
具体原因是本地安装的pcl版本一般是1.8的,但是pip安装的python-pcl默认只支持1.7,所以会出现找不到1.7的动态库,可以通过以下命令验证
cd \usr\lib
find | grep keypoints
但是本地的pcl要求pcl1.7,所以出错。
github上的issue都是让重新安装pcl1.7,但是都没有提供具体办法。或者已经过时。
最终的解决办法是通过源码安装python-pcl
首先通过
pip uninstall python-pcl
然后git clone
git clone https://github.com/strawlab/python-pcl.git
然后这时候如果直接build会出错,需要修改setup.py
1. 首先是在第726行,将vtk_version修改为6.3
2. 在752行删除一些依赖项,删掉'vtkXXXX-' + vtk_version,具体如下
vtkexpat
vtkfreetype
vtkgl2ps
vtkhdf5
vtkhdf5_hl
vtkjpeg
vtkjsoncpp
vtklibxml2
vtkNetCDF
vtkNetCDF_cxx
vtkoggtheora
vtkpng
vtkproj4
vtksqlite
vtktiff
vtkzlib
然后编译安装
python setup.py build_ext -i
python setup.py install
成功之后会出现Finished processing dependencies for python-pcl==0.3.0rc1
然后可能需要重启系统,再import就不会有问题了。
numpy版本太新的问题
在运行/home/jerry/softwares/python-pcl/tests目录下的python test_registration.py时会出现error,同时自己写的程序调用IterativeClosestPoint的时候也会出现这个error
ValueError: order must be one of 'C', 'F', 'A', or 'K' (got 'fortran')
原因是因为numpy版本太新
issues/358这个办法我试过,没有用,所以按照issues/376通过降低numpy版本解决。
方法:
pip uninstall numpy
python -m pip install -U numpy==1.17.5