本文借鉴文章,但是该文存在致命性问题,所以博主另开一版,来讲述如何在ubuntu16.04中安装cv_bridge。

使用ROS的时候只用了C++,没有发现cv_bridge这个坑,最近增加了一个使用pytorch的节点,为此使用Anaconda配置了一个只有Python3.5的环境,运行cv_bridge时出现报错

from cv_bridge.boost.cv_bridge_boost import getCvType
ImportError: dynamic module does not define module export function (PyInit_cv_bridge_boost)

其原因是出在ROS自带的cv_bridge只支持python2,想要使用Python3需要自行编译cv_bridge包,本人环境:Ubuntu 16.04+ROS +Anaconda3+Python3.5

具体步骤参考链接中的内容:

https://stackoverflow.com/questions/49221565/unable-to-use-cv-bridge-with-ros-kinetic-and-python3?rq=1

注意:上述链接中的操作要在系统的真实空间中,不要在conda建立的虚拟空间中操作!!!,另外以上参考的stackoverflow链接中,第二个回答没有借鉴价值,看第二个回答卡了我很久

为了保证上述环境的正确性,最好新打开一个终端,并且运行conda deactivate命令,然后按照上述链接中的操作即可完成。

编译cv_bridge包与使用依赖cv_bridge包的详细步骤:

  1. 首先进入python3的环境并安装相关依赖包
# 然后安装相关依赖包
sudo apt-get install python-catkin-tools python3-dev python3-catkin-pkg-modules python3-numpy python3-yaml ros-kinetic-cv-bridge
  1. 创建一个工作空间用于存放待编译的 cv_bridge 文件
mkdir -p catkin_workspace/src
  1. 指示carkin设置cmake变量
cd catkin_workspace
#注意,该处需要根据你原本自带的系统python版本设定。16.04是python3.5,18.04是python3.6
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
  1. Instruct catkin to install built packages into install place。这一步不成功也没关系,可不用。
# Instruct catkin to install built packages into install place. It is $CATKIN_WORKSPACE/install folder
catkin config --install
  1. 在catkin_workspace工作空间中克隆 cv_bridge src
git clone https://github.com/ros-perception/vision_opencv.git src/vision_opencv
  1. Find version of cv_bridge in your repository
apt-cache show ros-kinetic-cv-bridge | grep Version
  1. Checkout right version in git repo. In our case it is 1.12.8
#该步骤我是省去的
cd src/vision_opencv/
git checkout 1.12.8#必须要编译否则cv_bridge的CMakeLists默认版本为python37
cd ../../
  1. 开始编译
#有可能会有warning,不用管,只要不报错就行
catkin build
或者 catkin build cv_bridge
  1. 进入python3环境(virtualenv)之后,先进入到catkin_workspace工作目录下,运行下面的source,然后再到相关的节点工作空间(如catkin_ws),就可以启动那些使用到cv_bridge库的相关节点了:
# 打开虚拟环境env_py3和进入catkin_workspace空间进行source。
conda activate pytorch
cd catkin_workspace/
# 这里 --extend 参数的作用是让这次的路径配置不影响之前配置好的路径,否则这一次source会覆盖掉之前配置的路径。
source install/setup.bash --extend##每次都必须先激活然后才能使python3调用cv_bridge
cd ..
# 进入另一个工作空间,该空间含有需要启动的python脚本节点。
cd catkin_ws/src/beginner_tutorials/scripts/
python ImgSub.py

如果编译过程中遇到下面的报错:

编译过程中,如果出现下面的报错(目前好像vision_opencv导出来的boost是boost_python37):

CMake Error at /usr/share/cmake-3.6/Modules/FindBoost.cmake:1677 (message):Unable to find the requested Boost libraries.Boost version: 1.58.0Boost include path: /usr/includeCould not find the following Boost libraries:boost_python3No Boost libraries were found.  You may need to set BOOST_LIBRARYDIR to thedirectory containing Boost libraries or BOOST_ROOT to the location ofBoost.
Call Stack (most recent call first):CMakeLists.txt:11 (find_package)

这是因为CMake试图找到libboost_python3.so库,但是在ubuntu中它是libboost_python-py35.so(/usr/lib/x86_64-linux-gnu/libboost_python-py35.so)。因此应该在文件src/vision_opencv/cv_bridge/CMakeLists.txt中将下面这行更改find_package()中的内容,更改为python-py35。然后再重新编译:
原始行:

find_package(Boost REQUIRED python3)

更改成:

find_package(Boost REQUIRED python-py35)

Anaconda虚拟环境中,让Python3使用ROS的cv_bridge相关推荐

  1. (win10)anaconda虚拟环境中安装特定版本cuda+tensorflow+pytorch+pycharm

    1.安装anaconda 在官网安装最新版的anaconda,需要使用其他版本的python可创建虚拟环境.安装时选择all users以及添加环境变量. 2.安装cuda以及cudnn. 你可以选择 ...

  2. opencv + python3 利用ros 的 cv_bridge 传送图像消息的一种替代方法

    opencv + python3 利用ros 的 cv_bridge 传送图像消息的一种替代方法 利用自定义的图像类型代替sensor_msgs/Image, python2可以使用cv_bridge ...

  3. Anaconda虚拟环境中使用playsound测试报错 cannot import name ‘_gi‘ from ‘gi‘

    from . import _gi ImportError: cannot import name '_gi' from 'gi' (/home/chuw/anaconda3/envs/env37/l ...

  4. 【陈工笔记】# Anaconda 虚拟环境中的简单操作指令#

    "良好的习惯,才不会让努力白白浪费." 确认是否安装Anaconda: conda -V 查看当前已存在的虚拟环境: conda env list 查看目前已安装的包: conda ...

  5. ubuntu安装PyPy以及pypy在anaconda虚拟环境中的使用

    Ubuntu安装PyPy 1. 下载 下载地址:https://www.pypy.org/download.html 我选择的是PyPy3.8 2. 将下载后的安装包解压 注意,不要解压到tmp文件夹 ...

  6. 彻底解决anaconda虚拟环境中pip是全局pip 下载包自动到base环境而非虚拟环境的问题 No module named _abc报错解决

    删除系统变量中的       PYTHONHOME       C:\ProgramData\Anaconda3    同时需要将虚拟环境的Lib/site-package的路径添加至系统变量Path ...

  7. anaconda虚拟环境中conda,pip快速换源/显示源/删除源

    conda 换清华源 conda config --add channels https://mirrors.tuna.tsinghua.edu.cn/anaconda/pkgs/free/ cond ...

  8. 深度学习框架(Pytorch)+ 机器人(ROS):ROS melodic 上安装 Turtlebot2 —> 安装 hokuyo 激光雷达 —> Python 3 的虚拟环境中调用 ROS 填坑记录

    复现论文需要ubuntu+ros+turtlebot2+hokuyo的配置,这里有一个关于turtlebot的教程: Learn TurtleBot and ROS 关于 turtlebot 的各种软 ...

  9. 虚拟环境中cuda版本与系统cuda版本不同有什么影响

    虚拟环境中cuda版本与系统cuda版本不同有什么影响 1.虚拟环境中的cuda和系统安装的cuda是互不影响的,所以在虚拟环境中放心安装你需要的cuda版本.安装之后为了验证时候安装成功,在终端运行 ...

最新文章

  1. linux系统防火墙相关问题及常用命令介绍
  2. python1011无标题_讲解:Python:COMP1011 Programming For The WebPython
  3. 汇付天下支付使用 NPC_SERVER
  4. 指定init启动Linux内核,初看linux内核启动过程
  5. Java AJAX开发系列 - 5,ZK参考资料
  6. LINUX下载编译libyuv
  7. SAP 批导模板(WBS批导为例)
  8. C++中两个栈实现一个队列
  9. 基于RSelenium爬取中国裁判文书网文书数据
  10. jasper报表格式化bigdecimal(decimal128)数据千分位
  11. think在PHP中什么意思,thinkphp框架是什么意思
  12. 刷脸支付就是会员为大商户管理与运营提供帮助
  13. vue项目性能优化——断点续传
  14. HYPEREAL带来突破性的深度感知摄像头,在虚拟世界睁开真实之眼
  15. 98sez资源_Sez You建筑与忍者建筑
  16. 2022-11-16 AndroidS 新建产品lunch
  17. JRE和JDK和JVM
  18. Multisim--软件相关使用技巧
  19. ntopng安装和基本使用教程
  20. 正规python培训价格

热门文章

  1. Spring Boot(一):概述(5)——Spring Boot项目推荐工程结构
  2. 【报告分享】代餐行业营销洞察报告-丁香医生(附下载)
  3. iOS疯狂讲解之手势识别器
  4. [大赛推荐]短视频开发大赛,万元现金大奖等你来拿
  5. UOS启用wayland
  6. nginx 配置之 proxy_pass参数详解
  7. element-ui 输入框的前后缀图标 prefix-icon 和 suffix-icon
  8. 网卡驱动修改服务器,网卡驱动配置
  9. 第十一届 蓝桥杯 单片机设计与开发项目 决赛
  10. Heartbeat 与Corosync对比分析