admin管理员组

文章数量:1794759

点云处理工具——python

点云处理工具——python

python-pcl详细安装教程以及,ImportError: DLL load failed解决办法

文章目录
  • python-pcl
    • 简介
    • 使用预编译好的wheel安装(未成功)
    • 从源码编译捆绑
    • 使用conda安装
    • 错误解决
    • 测试
pcl的python版本绑定库主要有两个,一个pcl官方的python-pcl,一个是pclpy。

pclpy安装可参考系列文章:点云处理库pclpy安装 c++版本的pcl安装可参考系列文章:pcl点云库安装

python-pcl 简介

python-pcl是pcl的小型python绑定(使用Cython)。目前,API的以下部分被包装(所有方法都在PointXYZ上操作)

  • I/O and integration; saving and loading PCD files
  • segmentation
  • SAC
  • smoothing
  • filtering
  • registration (ICP, GICP, ICP_NL)

GitHub:github/strawlab/python-pcl

基本上按照官方的教程一步一步安装就没有 问题。

下面主要记录一下windows下的安装

使用预编译好的wheel安装(未成功)

这是windows上最简单的方法。wheel包含PCL二进制文件_,因此不需要安装原始的PCL库。

  • 进入appveyor的历史页面

  • 单击上一次成功的修订(绿色),并单击与python版本对应的作业

  • 进入该任务的artfacts部分并下载wheel(扩展名为whl的文件)

  • 在命令行中,移动到下载文件夹并运行以下命令(用右边的字符串替换XXX)

pip install python_pcl-XXX.whl

但是最近一次成功的提交已将是两年前了,而wheel文件只保留6个月,所以该方法行目前行不通。

从源码编译捆绑
  • 选择要下载的PCL的版本以及对应的visual studio、python版本。
  • Windows with

    • (Miniconda/Anaconda) - Python 3.4
    • pcl 1.6.0(VS2010)
    • Cython <= 0.25.2
    • Gtk+

    Windows with

    • (Miniconda/Anaconda) - Python 3.5
    • pcl 1.8.1(VS2015)
    • Cython <= 0.25.2
    • Gtk+

    Windows with

    • (Miniconda/Anaconda) - Python 3.6
    • pcl 1.8.1(VS2017[Priority High]/VS2015[not VS2017 Install])
    • Cython == 0.25.2
    • Gtk+

    Gtk下载:www.tarnyko/dl/gtk.htm

    下载Gtk压缩包gtk±bundle_3.6.4-20130513_win64 后,将bin下面的文件复制到python-pcl源码的pkg-config文件夹下。(或者直接执行pkg-config文件夹下的powershell文件[Install-GTKPlus.ps1].)

    python版本和vs编译器的对应:wiki.python/moin/WindowsCompilers

  • 配置环境变量
  • PCL_ROOT :

    set PCL_ROOT=(PCL Install/Build_Binary FolderPath)

    PATH:

    (pcl 1.6.0) set PATH=%PCL_ROOT%/bin/;%OPEN_NI_ROOT%/Tools;%VTK_ROOT%/bin;%PATH% (pcl 1.8.1/1.9.1) set PATH=%PCL_ROOT%/bin/;%OPEN_NI2_ROOT%/Tools;%VTK_ROOT%/bin;%PATH%
  • 编译设置
    • 使用pip进行编译安装
    pip install --upgrade pip pip install cython pip install numpy

    注意版本,在python-pcl库下边的setup.py里面看到这几句: 我选择的版本是

    numpy==1.16 cython==0.26.0

    安装

    python setup.py build_ext -i python setup.py install 使用conda安装

    或者也可以使用conda安装python-pcl

    conda create -n ipk # create a new conda env. -> conda activate ipk # activate env. conda update -n base -c defaults conda # update conda conda config --add channels conda-forge # add conda-forge channels conda install -c sirokujira python-pcl # pcl installation conda install -c jithinpr2 gtk3 # Gtk+ Gui dependency # 下面两步可选,是方便测试用的 conda install -y ipython # install ipython conda install -y jupyter # install jupyter 错误解决

    从源码编译捆绑后,输入import pcl出现错误:

    Python37\\lib\\site-packages\\python_pcl-0.3-py3.7-win-amd64.egg\\pcl_*init*_.py", line 5, in from ._pcl import * ImportError: DLL load failed

    这是因为conda的环境变量path和我们在windows里面设的环境变量不一致,在当前conda环境中输入echo %path%,查看当前conda环境中的环境变量: 发现conda中的环境变量只有我们设置的PATH中的前面一部分(也有可能是我软件装的太多了,PATH比较长) 解决办法:可以把PCL相关的几个路径上移到最前面 这样就可以顺利导出了! 其他解决方法:

    更多解决方法参考系列文章:python-pcl安装ImportError: DLL load failed解决办法解决方案

    测试 # -*- coding: utf-8 -*- from __future__ import print_function import numpy as np import pcl import pcl.pcl_visualization def main(): cloud = pcl.load('examples/pcldata/tutorials/table_scene_lms400.pcd') # Centred the data centred = cloud - np.mean(cloud, 0) # print(centred) ptcloud_centred = pcl.PointCloud() ptcloud_centred.from_array(centred) visual = pcl.pcl_visualization.CloudViewing() # PointXYZ visual.ShowMonochromeCloud(ptcloud_centred, b'cloud') v = True while v: v = not(visual.WasStopped()) if __name__ == "__main__": # import cProfile # cProfile.run('main()', sort='time') main()

    效果:

    本文标签: 工具Python