一、cv_bridge官方文档
http://wiki.ros.org/cv_bridge/Tutorials/ConvertingBetweenROSImagesAndOpenCVImagesPython
调用方式:
from cv_bridge import CvBridge
bridge = CvBridge()
# opencv图像转换为sensor_msgs/Image图像
image_message = bridge.cv2_to_imgmsg(cv_image, encoding="bgr8")
# 把sensor_msgs/Image图像转换为opencv图像
cv_image = bridge.imgmsg_to_cv2(image_message, desired_encoding='bgr8')
二、python3.6配置
2.1 依赖包安装
sudo apt-get install python-catkin-tools python3-dev python3-catkin-pkg-modules python3-numpy python3-yaml ros-melodic-cv-bridge
2.2 创建工作空间
cd ~ && mkdir cv_bridge_ws
2.3 初始化工作空间
注:出现的红色警告不用管
cd cv_bridge_ws && catkin init
2.4 设置cmake编译选项
# 设置cmake变量(以python3.6为例,注意x86_64_linux-gnu文件夹,如果是aarch64架构它的名字应该是aarch64-linux-gnu)
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
注:按照自己的路径设置依赖
# 1
python3
>>>import sys
>>>print(sys.executable) #输出/usr/bin/python3
>>>print(sys.path) #输出各种路径
>>>quit()
# 2
python3 -config --includes #输出所需路径 -I/usr/include/python3.6m -I/usr/include/python3.6m
2.5 把所有编译好的包放在工作空间的install文件夹下(暂时没有该文件)
catkin config --install
2.6 下载安装包cv_bridge
cd cv_bridge_ws
git clone https://github.com/ros-perception/vision_opencv.git src/vision_opencv
2.7 查找cv_bridge版本
apt-cache show ros-melodic-cv-bridge | grep Version
2.8 在git repo中签出版本(1.13.0)
cd src/vision_opencv/
git checkout 1.13.0
cd ../../
2.9 编译准备
要把src/vision_opencv/cv_bridge/CMakeLists.txt
中的find_package(Boost REQUIRED python37)改为find_package(Boost REQUIRED python-py3)
3.0 编译
catkin make
3.1 将功能包加到扩展环境中
source install/setup.bash --extend
sudo gedit ~/.bashrc
#在末尾加上
source ~/cv_bridge_ws/install/setup.bash --extend
参考链接:https://blog.csdn.net/qq_44876051/article/details/112370423
https://blog.csdn.net/weixin_43434136/article/details/112646275#comments_15752476
三、 编译opencv4.4 python3.6 cv_bridge
3.1 依赖安装如上2.1
3.2 初始化并编译工作空间
mkdir -p cv_bridge_ws/src && cd cv_bridge_ws/src
catkin_init_workspace
3.3 编译
cd ../
catkin_make install -DPYTHON_EXECUTABLE=/usr/bin/python3
编译出错:进入报错文件vision_opencv/cv_bridge/CMakeLists.txt
将CMakeLists.txt
中 python37
改为 python3
3.4环境变量添加:
使用python3时可以默认调用:
source /home/wyh/cv_bridge_ws/install/setup.bash --extend
3.4便以后不能调用问题
将自己安装的opencv编译生成的build文件路径加入到克隆下来的这个包里的CMakeLists.txt,即/home/wyh/cv_bridge_ws/src/vision_opencv/cv_bridge/CMakeLists.txt
修改添加下列语句(详见此文件目录下的CMakeLists.txt文件),最后一句为添加内容
set(_opencv_version 4)
find_package(OpenCV 4 QUIET)
if(NOT OpenCV_FOUND)
message(STATUS "Did not find OpenCV 4, trying OpenCV 3")
set(_opencv_version 3)
endif()
set(OpenCV_DIR "/home/wyh/opencv-4.4.0/build")
3.5 使用:
将需要使用cv_bridge
的ros包里的CMakeLists.txt
文件中添加opencv路径以及cv_bridge
路径
set(OpenCV_DIR "/home/wyh/opencv-4.4.0/build")
set(cv_bridge_DIR /home/wyh/cv_bridge_ws/devel/share/cv_bridge/cmake)