Use Ros cv_bridge with Python3 in ROS Melodic #
背景 #
在使用 ROS Melodic 的时候, cv_bridge默认是使用python2.7. 在 python3 中使用cv bridge 会出现错误.
解决办法 #
自己编译python3 版本的cv bridge
依赖 #
使用以下命令安装需要的依赖
sudo apt-get install python3-pip python-catkin-tools python3-dev python3-numpy
sudo pip3 install rospkg catkin_pkg
编译 #
-
需要创建一个工作空间
mkdir -p ~/cvbridge_build_ws/src cd ~/cvbridge_build_ws/src
-
下载noetic版本的cv bridge
使用这个github仓库的noetic分支, 将代码放到cvbridge_build_ws/src目录下
-
git clone
git clone -b noetic https://github.com/ros-perception/vision_opencv.git
-
-
修改需要编译的Python版本
首先需要确保你 Ubuntu 系统的python默认是python3, 修改 vision_opencv/cv_bridge/CMakeLists.txt 将:
find_package(Boost REQUIRED python37)
修改为:
find_package(Boost REQUIRED python3)
-
编译
首先需要知道你的python3路径在那里, 可以使用以下命令获得:
where python3
或者
which python3
然后知道python的include路径, 可以使用以下命令获得:
import sys print(sys.executable) #Print python3 executable path print(sys.path) #Print python3 library path
或者使用
python3-config --includes
然后根据以下获得的变量执行下列命令:
cd ~/cvbridge_build_ws catkin config -DPYTHON_EXECUTABLE=/usr/bin/python3 -DPYTHON_INCLUDE_DIR=/usr/include/python3.6m -DPYTHON_LIBRARY=/usr/lib/aarch64-linux-gnu/libpython3.6m.so catkin config --install
编译cv_bridge
catkin build cv_bridge
-
使用
-
当前终端临时使用
source install/setup.bash --extend
-
开机自动使用
可以添加到.bashrc里面
source ~/cvbridge_build_ws/install/setup.bash --extend
-