在非系统自带的Python环境中使用CvBridge

在非系统自带的Python环境中使用CvBridge

使用最新的深度学习网络时往往需要较新版本的Python,在封装成ROS时,涉及到图像的发布/接收需要使用CvBridge。

1. 源码编译安装Python

apt安装的python缺少libpython3.Xm.so,无法编译boost,因此需要源码编译安装Python3.X(以Python3.7.9为例)

wget https://www.python.org/ftp/python/3.7.9/Python-3.7.9.tgz
tar -xvf Python-3.7.9.tgz
cd Python-3.7.9

./configure --prefix=/home/dcv/tools/python3.7.9 --enable-shared --enable-optimizations
make
sudo make install

加上–enable-shared是为了得到libpython3.Xm.so

如果要在虚拟环境中使用手动安装的python,需要在.bashrc里面加入:

export PATH=$PATH:/home/dcv/tools/python3.7.9/bin
export LD_LIBRARY_PATH=$LD_LIBRARY_PATH:/home/dcv/tools/python3.7.9/lib

如果pip不可用,使用以下命令重装:

wget https://bootstrap.pypa.io/get-pip.py
python get-pip.py --force-reinstall

如果在CMake的时候想指定Python,编译时使用:

cmake -DPython_EXECUTABLE=/home/dcv/tools/python3.7.9/bin/python3 ..

如果在virtualenv报错error while loading shared libraries: libpython3.Xm.so.1.0:cannot open shared object file: No such file or directory ,则执行:

cp libpython3.Xm.so.1.0 /usr/local/lib64/

cp libpython3.Xm.so.1.0 /usr/lib/

cp libpython3.Xm.so.1.0 /usr/lib64/

2. 编译安装boost

(1)下载代码

在 https://www.boost.org/users/history/ 上找到合适版本的boost源码,建议下载1.77以上的版本,这些版本会直接给出cmake文件方便编写CMakeLists

(2)编译boost

以Python3.7.9+Boost-1.78.0为例

./bootstrap.sh --with-python=python3 --with-python-root=/home/dcv/tools/python3.7.9/bin/python3.7 --with-python-version=3.7 --with-toolset=gcc

./bootstrap.sh --with-python=/home/dcv/tools/python3.7.9/bin/python3.7 --with-python-version=3.7 --with-python-root=/home/dcv/tools/python3.7.9/lib/python3.7

./b2 cflags='-fPIC' cxxflags='-fPIC' --with-python include="/home/dcv/tools/python3.7.9/include/python3.7m"

sudo ./b2 install

编译完成后会在 stage/lib 文件夹下面生成所需的 libboost_python37.a 和 libboost_python37.so,并在 stage/lib/cmake/Boost-1.78.0文件夹下面生成 BoostConfig.cmake 文件,可以用它在编译过程中找到Boost

3. 编译Cv_bridge

(1)创建工作空间并且将代码切换成符合本机软件的版本

mkdir -p cv_bridge_ws/src && cd cv_bridge_ws
git clone https://github.com/ros-perception/vision_opencv.git src/vision_opencv
apt-cache show ros-melodic-cv-bridge | grep Version
cd src/vision_opencv/
git checkout 1.XX.X # 改成前面查看的版本号
cd ../../

(2)修改CMakeLists

在 /vision_opencv/cv_bridge/CMakeLists.txt中第四行

find_package(catkin REQUIRED COMPONENTS rosconsole sensor_msgs)

之前加入以下三行:

set(Boost_DIR "/home/dcv/tools/boost_1_78_0/stage/lib/cmake/Boost-1.78.0") # BoostConfig.cmake 文件路径
set(rosconsole_DIR "/opt/ros/melodic/share/rosconsole/cmake") # 单独安装的Python可能需要这一行
set(sensor_msgs_DIR "/opt/ros/melodic/share/sensor_msgs/cmake") # 单独安装的Python可能需要这一行

(3)配置编译环境

指定编译所用的Python版本(也就是刚刚安装的Python3.7.9)

catkin config -DPYTHON_EXECUTABLE=/home/dcv/tools/python3.7.9/bin/python3 -DPYTHON_INCLUDE_DIR=/home/dcv/tools/python3.7.9/include/python3.7m -DPYTHON_LIBRARY=/home/dcv/tools/python3.7.9/lib/libpython3.7m.so -DSETUPTOOLS_DEB_LAYOUT=OFF

catkin config --install

加上-DSETUPTOOLS_DEB_LAYOUT=OFF是为了防止报错 error: option --install-layout not recognized

(4)编译

catkin build cv_bridge

(5)验证

source devel/setup.bash --extend # 加入--extend是为了防止后面的source覆盖掉前面的source

# 验证
python
>> import cv_bridge
>> from cv_bridge.boost.cv_bridge_boost import getCvType
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值