- 问题描述
- 解决方案
- 使用方法
ROS与opencv之间的数据类型转换是通过cv_bridge这个包来实现的。melodic中默认使用python2,因此rospy的cv_bridge也默认是python2版本的。使用python3导入cv_bridge时会报这个错:
from cv_bridge.boost.cv_bridge_boost import getCvType importError: dynamic module does not define module export function (PyInit_cv_bridge_boost)解决方案
此时需要重新编译一个适用于Python3的cv_bridge包。
首先下载源码:
git clone https://github.com/ros-perception/vision_opencv.git
新建工作空间并把cv_bridge包放入:
mkdir -p vision_opencv_ws/src cd vision_opencv_ws mv -r ../vision_opencv src/
设置catkin编译使用的python3版本:
catkin config -DPYTHON_EXECUTABLE=/usr/bin/python3 -DPYTHON_INCLUDE_DIR=/usr/include/python3.6m -DPYTHON_LIBRARY=/usr/lib/x86_64-linux-gnu/libpython3.6m.so
(可选)指定编译包后放入install文件夹中:
catkin config --install
编译:
catkin build使用方法
在运行python3前,激活新编译好的cv_bridge环境:
source vision_opencv_ws/install/setup.bash
然后运行python代码就可以正常导入cv_bridge包了。



