python 可视化点云工具 python-pcl

(感谢前辈)转自:https://zhuanlan.zhihu.com/p/72116675


python-pcl github地址

python-pcl 是我尝试过使用体验最好的点云数据可视化工具,它是c++上著名的pcl的python版本,虽然还有很多代码没有写完整,但是不妨碍它成为一个优秀的python 点云工具;

GitHub页面:
https://github.com/strawlab/python-pcl


windows下安装python-pcl


ubuntu18.04配置python-pcl

这里用最简单并且最好用的方法:

pip3 install cython==0.26.0    # 看到python-pcl中setup.py提示cython>=0.26.0
pip3 install numpy  # 还需要安装一下numpy
sudo apt-get install libpcl-dev pcl-tools

完美完成,这里默认的安装版本的pcl1.8.1,vtk6.3
安装python-pcl

git clone https://github.com/strawlab/python-pcl.git
cd python-pcl-master

这里先不要着急buildinstall,修改setup.py文件中的两处地方

第一处是:由于libpcl-dev默认的依赖是6.3,而python-pclsetup.py文件里是7.0,所以我们在setup.py文件里728行更改配置,将7.0注释掉,改成默认装好的6.3版本。

python 点云 obb包围盒 python点云可视化工具_python 点云 obb包围盒

第二处是,删除752行中一些不需要的东西:

vtkexpat
vtkfreetype
vtkgl2ps
vtkhdf5
vtkhdf5_hl
vtkjpeg
vtkjsoncpp
vtklibxml2
vtkNetCDF
vtkNetCDF_cxx
vtkoggtheora
vtkpng
vtkproj4
vtksqlite
vtktiff
vtkzlib

或者直接复制下面替换一下也OK

vtklibreleases = ['vtkalglib-' + vtk_version, 'vtkChartsCore-' + vtk_version, 'vtkCommonColor-' + vtk_version, 'vtkCommonComputationalGeometry-' + vtk_version, 'vtkCommonCore-' + vtk_version, 'vtkCommonDataModel-' + vtk_version, 'vtkCommonExecutionModel-' + vtk_version, 'vtkCommonMath-' + vtk_version, 'vtkCommonMisc-' + vtk_version, 'vtkCommonSystem-' + vtk_version, 'vtkCommonTransforms-' + vtk_version, 'vtkDICOMParser-' + vtk_version, 'vtkDomainsChemistry-' + vtk_version, 'vtkexoIIc-' + vtk_version, 'vtkFiltersAMR-' + vtk_version, 'vtkFiltersCore-' + vtk_version, 'vtkFiltersExtraction-' + vtk_version, 'vtkFiltersFlowPaths-' + vtk_version, 'vtkFiltersGeneral-' + vtk_version, 'vtkFiltersGeneric-' + vtk_version, 'vtkFiltersGeometry-' + vtk_version, 'vtkFiltersHybrid-' + vtk_version, 'vtkFiltersHyperTree-' + vtk_version, 'vtkFiltersImaging-' + vtk_version, 'vtkFiltersModeling-' + vtk_version, 'vtkFiltersParallel-' + vtk_version, 'vtkFiltersParallelImaging-' + vtk_version, 'vtkFiltersProgrammable-' + vtk_version, 'vtkFiltersSelection-' + vtk_version, 'vtkFiltersSMP-' + vtk_version, 'vtkFiltersSources-' + vtk_version, 'vtkFiltersStatistics-' + vtk_version, 'vtkFiltersTexture-' + vtk_version, 'vtkFiltersVerdict-' + vtk_version,  'vtkGeovisCore-' + vtk_version, 'vtkImagingColor-' + vtk_version, 'vtkImagingCore-' + vtk_version, 'vtkImagingFourier-' + vtk_version, 'vtkImagingGeneral-' + vtk_version, 'vtkImagingHybrid-' + vtk_version, 'vtkImagingMath-' + vtk_version, 'vtkImagingMorphological-' + vtk_version, 'vtkImagingSources-' + vtk_version, 'vtkImagingStatistics-' + vtk_version, 'vtkImagingStencil-' + vtk_version, 'vtkInfovisCore-' + vtk_version, 'vtkInfovisLayout-' + vtk_version, 'vtkInteractionImage-' + vtk_version, 'vtkInteractionStyle-' + vtk_version, 'vtkInteractionWidgets-' + vtk_version, 'vtkIOAMR-' + vtk_version, 'vtkIOCore-' + vtk_version, 'vtkIOEnSight-' + vtk_version, 'vtkIOExodus-' + vtk_version, 'vtkIOExport-' + vtk_version, 'vtkIOGeometry-' + vtk_version, 'vtkIOImage-' + vtk_version, 'vtkIOImport-' + vtk_version, 'vtkIOInfovis-' + vtk_version, 'vtkIOLegacy-' + vtk_version, 'vtkIOLSDyna-' + vtk_version, 'vtkIOMINC-' + vtk_version, 'vtkIOMovie-' + vtk_version, 'vtkIONetCDF-' + vtk_version, 'vtkIOParallel-' + vtk_version, 'vtkIOParallelXML-' + vtk_version, 'vtkIOPLY-' + vtk_version, 'vtkIOSQL-' + vtk_version, 'vtkIOVideo-' + vtk_version, 'vtkIOXML-' + vtk_version, 'vtkIOXMLParser-' + vtk_version, 'vtkmetaio-' + vtk_version,  'vtkParallelCore-' + vtk_version,  'vtkRenderingAnnotation-' + vtk_version, 'vtkRenderingContext2D-' + vtk_version, 'vtkRenderingContextOpenGL-' + vtk_version, 'vtkRenderingCore-' + vtk_version, 'vtkRenderingFreeType-' + vtk_version, 'vtkRenderingGL2PS-' + vtk_version, 'vtkRenderingImage-' + vtk_version, 'vtkRenderingLabel-' + vtk_version, 'vtkRenderingLIC-' + vtk_version, 'vtkRenderingLOD-' + vtk_version, 'vtkRenderingOpenGL-' + vtk_version, 'vtkRenderingVolume-' + vtk_version, 'vtkRenderingVolumeOpenGL-' + vtk_version,  'vtksys-' + vtk_version, 'vtkverdict-' + vtk_version, 'vtkViewsContext2D-' + vtk_version, 'vtkViewsCore-' + vtk_version, 'vtkViewsInfovis-' + vtk_version]

这下就可以放心的进行安装,执行以下两条命令即可:

python3 setup.py build_ext -i
python3 setup.py install

看到下面提示就代表安装成功了

python 点云 obb包围盒 python点云可视化工具_python_02


python 点云 obb包围盒 python点云可视化工具_github_03


到该页面后点击绿色的便签,绿色代表编译成功,红色表示失败,然后看是不是符合你的系统和python版本,我用的是Windows版本,python可以随意选,因为用的虚拟环境;

下载完成后直接pip 安装就可以了:

pip3 install python_pcl-XXX.whl

可视化的实例代码 1:

import pcl.pcl_visualization


# lidar_path 指定一个kitti 数据的点云bin文件就行了
points = np.fromfile(lidar_path, dtype=np.float32).reshape(-1, 4)  # .astype(np.float16)
cloud = pcl.PointCloud(points[:,:3])
visual = pcl.pcl_visualization.CloudViewing()
visual.ShowMonochromeCloud(cloud)


flag = True
while flag:
    flag != visual.WasStopped()

可视化的实例代码 2, 可以加入颜色显示:

import pcl.pcl_visualization

# lidar_path 指定一个kitti 数据的点云bin文件就行了 points = np.fromfile(lidar_path, dtype=np.float32).reshape(-1, 4)  # .astype(np.float16)


# 这段代码省略,要在这里对第四列进行赋值,它代表颜色值,根据你自己的需要赋值即可; points[:,3] = ...


# PointCloud_PointXYZRGB 需要点云数据是N*4,分别表示x,y,z,RGB ,其中RGB 用一个整数表示颜色; color_cloud = pcl.PointCloud_PointXYZRGB(points) visual = pcl.pcl_visualization.CloudViewing() visual.ShowColorCloud(color_cloud, b'cloud') flag = True while flag:
    flag != visual.WasStopped()

效果如下图,可以任意旋转查看视图,非常快捷方便,并且一点都不卡!!

python 点云 obb包围盒 python点云可视化工具_github_04