python3 cv_bridge ros1

由于ROS1官方只支持python2,所以cv_bridge只支持python2,在python3环境使用cv_bridge会产生以下报错:
dynamic module does not define module export function (PyInit_cv_bridge_boost)

现附上解决网址:
https://www.jianshu.com/p/31a84d29367c
https://stackoverflow.com/questions/49221565/unable-to-use-cv-bridge-with-ros-kinetic-and-python3
https://blog.csdn.net/hnlyzxy123/article/details/103206706
https://blog.csdn.net/weixin_44060400/article/details/104347628
https://blog.csdn.net/kuizhao8951/article/details/104183268

下面是我具体的解决办法
1、github下载源码:
首先创建一个工作空间,比如在cv_bridge_ws/src中输入
$ git clone -b kinetic https://github.com/ros-perception/vision_opencv.git
下载源码,注意版本分支,下载后不需要编译

2、设置catkin编译环境,这里需要把编译环境引导到python3,不然还是关联到python2
$ catkin config -DPYTHON_EXECUTABLE=/usr/bin/python3 -DPYTHON_INCLUDE_DIR=/usr/include/python3.5m -DPYTHON_LIBRARY=/usr/lib/x86_64-linux-gnu/libpython3.5m.so
$ catkin config --install
注意这里需要具体到目录中查看到底是哪个版本的python,有可能是python3.6
这里会报错没有catkin,安装:
$ sudo apt-get install python-catkin-tools

3、编译
在工作空间中输入(src上一级)
$ catkin build cv_bridge

这里会提示错误,主要是一些模块没有安装,下面安装一下依赖
$ sudo apt-get install python3-catkin-pkg-modules python3-numpy
还会提示没有boot_python3
这里需要软连接一下:
$ sudo ln -s /usr/lib/x86_64-linux-gnu/libboost_python-py36.so /usr/lib/x86_64-linux-gnu/libboost_python3.so
同样注意python版本

这时再输入$ catkin build cv_bridge应该不会报错

4、使用
使用时候source install/setup.bash,然后在同一终端中切换到自己的workspace,注意在自己的workspace里source的时候要加一个参数–extend,否则这一次source会覆盖掉之前配置的路径
source devel/setup.bash --extend
extend参数的作用是让这次的路径配置不影响之前配置好的路径
实际上install/setup.bash与devel/setup.bash中的内容一样,一个是软连接,
使用下面命令添加到bashrc,这样在每次启动终端时自动包含
Echo “source ~/cv_bridge_ws/devel/setup.bash --extend” >> ~/.bashrc

5、测试
在python3环境中输入:
$ from cv_bridge.boost.cv_bridge_boost import getCvType

  • 0
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值