问题描述:
由于cv_bridge默认仅支持使用ros中的python2版本,导致在Anaconda的python3虚拟环境中使用时会报如下错误,或者直接核心转储。
dynamic module does not define module export function (PyInit_cv_bridge_boost)
解决(用python3编译)
在使用其他人介绍的方法始终不起作用后使用这篇文章中Answer1的解决方法最终实现了使用python3编译cv_bridge。
注意事项:
1.需要在真实环境中使用该解决方法,而不是虚拟环境
2.只用执行该回答中不加“#”号的命令
3.在执行过程中可能出现 warning 的情况,不用理会,直接一直执行下去
4.设置cv_bridge编译器的那段命令中需要使用自己系统中的python3版本,可以使用命令whereis python进行查询
5.执行完上述命令之后可以进入虚拟环境中使用如下命令判断是否安装成功(没报错即成功):
python
import cv_bridge
from cv_bridge.boost.cv_bridge_boost import getCvType
6.在环境变量.bashrc文件中添加conda的python3环境变量,以及末尾加入 source ~/catkin_workspace/install/setup.bash --extend 来添加环境变量,具体可以参考这篇文章中设置环境变量部分的内容。