点云处理工具——python-pcl安装教程

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


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:https://github.com/strawlab/python-pcl

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

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

使用预编译好的wheel安装

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

  • 进入appveyor的历史页面

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

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

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

pip install python_pcl-XXX.whl

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

从源码编译捆绑

  1. 选择要下载的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下载:http://www.tarnyko.net/dl/gtk.htm

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

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

  1. 配置环境变量

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%
  1. 编译设置
  • 使用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()

效果:
在这里插入图片描述

猜你喜欢

转载自blog.csdn.net/weixin_44456692/article/details/114885727