环境。基于python3环境编译cv_bridge这里介绍两种编译cv_bridge的方式,一种是本地环境,一种是conda环境。1.1原生python3.6环境sudoapt-getinstallpython3-devpython3-numpypython3-yamlros-melodic-cv-bridgepython3-rospkg-modulespip3installpip--updatepip3installrosdeprosinstallcatkin_pkg(1)初始化cv_bridge_ws编译工作区mkdir-pcv_bridge_ws/src&&cdcv_bridge_ws/srccatkin_init_workspace(2)拉取cv_bridge源码到本地gitclonehttps://github.com/ros-perception/vision_opencv.git(3)编译cv_bridgecd../catkin_makeinstall-DPYTHON_EXECUTABLE=/usr/bin/python3编译报错并解决问题一:解决方法:1.查看你的libbost_python*文件(我这里用的是armubuntu,如果你是x86的,在/usr/lib/x86-64-linux-gnu这个文件夹)cd/usr/lib/aarch64-linux-gnu/lslibboost_python*进入报错文件vision_opencv/cv_bridge/CMakeLists.txt,把11行和14行的python37改成python3,然后然后重新编译。(4)编译成功(5)将编译后的文件添加到环境变量中,这样我们就可以使用python3了,默认调用:(这里一定要改成自己编译的路径!!!下面直接复制过去为sure报错!!)source/home/xxx/cv_bridge_ws/install/setup.bash--extend(6)测试并重新打开一个终端:运行python3importcv_bridgefromcv_bridge.boost.cv_bridge_boostimportgetCvTypeall导入成功的意思基于python3的cv_bridge已成功编译。现在可以直接在ROS中编写python3代码,节点会自动调用对应python版本的cv_bridge!1.2conda的python3.X环境需要注意如果使用conda创建的python3环境运行代码,需要将终端的默认启动环境修改为你的ros编译环境!!(1)创建conda环境condacreate-nrospython=3.6condaactivaterospipinstall--upgradepippipinstallrosdeprosinstallcatkin_pkgrospkgnumpypyyamlopencv-pythonvim~/.bashrc将之前的condaactivate改为condaactivateros(2)初始化工作空间,获取vision_opencvmkdir-pros_cv_bridge/src&&cdros_cv_bridge/srccatkin_init_workspacegitclonehttps://gitee.com/irvingao/vision_opencv.git(3)在cv_bridge这里编译python解释器,选择conda的python路径,如果你不知道使用whereispython查询:我的python解析器路径是:/home/innox/anaconda3/bin/python将下面命令中的解释器路径更改为你的路径:cd../exportCPLUS_INCLUDE_PATH=/home/innox/anaconda3/include/python3.7mcatkin_makeinstall-DCMAKE_BUILD_TYPE=Release-DSETUPTOOLS_DEB_LAYOUT=OFF-DPYTHON_EXECUTABLE=/home/innox/anaconda3/bin/python编译成功:(4)将编译后的文件添加到环境变量vim~/.在最后添加bashrc:source~/ros_cv_bridge/install/setup.bash--extend退出,然后source:source~/.bashrc一定要按照下面的顺序!!!(5)测试是否安装成功:pythonimportcv_bridgefromcv_bridge.boost.cv_bridge_boostimportgetCvType最近花了几天时间整理了一个Python入门理论+实践进阶教程。这可能是你看过的非常好的学习资料之一,独家创作,完全免费。需要的同学可以关注gzh【Python编程学习圈】发送“学习资料”获取~
