🅰️cv_bridge直接安装:
sudo apt-get install ros-<ros-release>-cv-bridge
一般情况下ros自带cv_bridge,但是默认环境如下:
ros:默认python为2.7
python:常用的为3.6
opencv:可能安装了4+
cv_bridge:要求python2,opencv3
🅱️cv_bridge编译重新安装:
-
建立ROS工作空间并初始化
-
git cv_bridge原文件
sudo apt install python-catkin-tools python3-dev python3-catkin-pkg-modules python3-numpy python3-yaml ros-melodic-cv-bridge mkdir -p cv_bridge_ws/src && cd cv_bridge_ws git clone https://github.com/ros-perception/vision_opencv.git src/vision_opencv-melodic
注意和ros版本相同
此时直接进行编译会由于opencv4版本而编译不通过,opencv3可以跳过第三步,opencv4需要进行第三步。
-
git opencv4修改文件
cd cv_bridge_ws/src/vision_opencv-melodic git clone https://github.com/mhsitu/cv4_bridge.git
将该文件替换原目录下的vision_opencv文件。
-
编译安装cv_bridge
cd cv_bridge_ws # 设置安装连接的python3 catkin config -DCMAKE_BUILD_TYPE=Release -DPYTHON_EXECUTABLE=/usr/bin/python3 -DPYTHON_INCLUDE_DIR=/usr/include/python3.6m -DPYTHON_LIBRARY=/usr/lib/aarch64-linux-gnu/libpython3.6m.so catkin build source devel/setup.bash --extend
此时可以成功编译
-
测试cv_bridge
$ source devel/setup.bash --extend python3 import cv_bridge from cv_bridge.boost.cv_bridge_boost import getCvType
不报错则成功
# 切换python环境 sudo update-alternatives --config python
-
环境配置
首先修改 .bashrc 文件,使得每次启动终端时先更新一下环境变量
source /home/airporal/bishe/cv_bridge_ws/devel/setup.bash --extend
在CMakeLists.txt文件里添加:
find_package(cv_bridge)
-
使用
from cv_bridge import CvBridge # 实例化 bridge = CvBridge() # 将Image转化为numpy cv_image = bridge.imgmsg_to_cv2(msg, desired_encoding="passthrough") # 将numpy转化为Image image_cv = bridge.cv2_to_image(image,desired_encoding="passthrough")
可以根据需要修改编码格式:
passthrough为保持原编码
mono8为8位灰度图像(mono16)
bgr8为蓝绿红彩色图像
rgb8为红绿蓝彩色图像
bgra8为带a通道的BGR图像(rgba8)
-