栏目分类:
子分类:
返回
名师互学网用户登录
快速导航关闭
当前搜索
当前分类
子分类
实用工具
热门搜索
名师互学网 > IT > 软件开发 > 后端开发 > Python

Ubuntu18.04安装python-pcl

Python 更新时间: 发布时间: IT归档 最新发布 模块sitemap 名妆网 法律咨询 聚返吧 英语巴士网 伯小乐 网商动力

Ubuntu18.04安装python-pcl

Ubuntu18.04安装python-pcl

需求: 通过安装python-pcl库, 可以使用pcl中的某些函数。例如, 使用open3d 读取pcd文件时,只保留xyz信息,无法获取强度值。故采用python-pcl中的函数 load 进行读取。
参考:Ubuntu 18.04安装python-pcl 解决ImportError: libpcl_keypoints.so.1.7问题

一. 当前环境
  • Ubuntu18.04
  • python3.6
二. 安装记录 1. 试错过程

首先按照参考文的里面的过程,一路顺利。但是测试时,在python中import pcl时,出现新的错误,在博文问题中也有人问到相同的问题,错误如下:

import pcl
undefined symbol: _ZN3pcl6search6KdTreeINS_12PointXYZRGBAENS_11KdTreeFLANNIS2_N5flann9L2_SimpleIfEEEEE13setInputCloudERKN5boost10shared_ptrIKNS_10PointCloudIS2_EEEERKNSA_IKSt6vectorIiSaIiEEEE

猜测原因:库在使用过程中链接了错误的版本,导致出现了未定义的符号。

2. 正确安装流程 2.1 安装pcl点云库,Ubuntu18.04默认安装1.8版本的pcl
sudo apt-get install libpcl-dev pcl-tools
2.2 使用源码方式,安装VTK7.1版本
  • 先安装opengl
sudo apt-get install libgl1-mesa-dev #需要先安装opengl
sudo apt-get install libxt-dev
  • 下载VTK7.1.1源码
    登录 https://vtk.org/download/ ,下载 An Earlier Release (7.1.1)中,Platform: source 下面的VTK-7.1.1.tar.gz。

  • 解压与编译、安装

tar -xf VTK-7.1.1.tar.gz
mkdir build
cd build && cmake ..
make -j8
sudo make install

注意:安装完成后,VTK安装位置如下:

/usr/local/include/vtk-7.1  #包含目录,头文件所在 
/usr/local/lib   # 动态库目录
2.3 使用源码方式,安装python-pcl
  • 先删除第一步试错安装的pcl
    这一步骤很重要,否则后期依旧会报未定义符号的错误,例如我这次使用conda的虚拟环境,删除pcl
rm -rf /home/cui/anaconda3/envs/learning3d/lib/python3.6/site-packages/pcl/
  • 下载python-pcl
git clone https://github.com/strawlab/python-pcl.git(原版,如果速度慢请使用下面的)
git clone https://gitee.com/lucy2020/python-pcl.git
  • 修改配置
    在setup.py文件中,修改三处,分别如下,这里修改了vtk版本与上面安装vtk的包含目录与库目录。
修改726行为:vtk_version = '7.1'
修改729行为:vtk_include_dir = os.path.join('/usr/local/include/vtk-' + vtk_version)
修改730行为:vtk_library_dir = os.path.join('/usr/local/lib')
  • 编译与安装
python setup.py build_ext -i
python setup.py install
三. 结果

可以正常在python3.6环境中愉快的使用pcl了,如下面的小例子,点云数据转换为numpy:

import numpy as np
import pcl
p = pcl.PointCloud(10)  # "empty" point cloud
a = np.asarray(p)       # NumPy view on the cloud
a[:] = 0                # fill with zeros
print(p[3])             # prints (0.0, 0.0, 0.0)
a[:, 0] = 1             # set x coordinates to 1
print(p[3])             # prints (1.0, 0.0, 0.0)
转载请注明:文章转载自 www.mshxw.com
本文地址:https://www.mshxw.com/it/926035.html
我们一直用心在做
关于我们 文章归档 网站地图 联系我们

版权所有 (c)2021-2022 MSHXW.COM

ICP备案号:晋ICP备2021003244-6号