目录
一、编译python3版本的cv_bridge
核心:不需要修改任何地方,只需要添加编译命令参数即可!
ubuntu18.04使用ROS版本是melodic,其调用的python库仍然为python2版本,因此需要重新编译python3版本的cv_bridge库,才能正常被python3版的ROS程序调用!
python中要将cv::mat数据转换为ROS的image类型,需要使用cv_bridge。而ROS自带cv_bridge的python接口API是2.7版本,因此需要重新编译cv_bridge包。
1.1 下载源码
git clone https://github.com/ros-perception/vision_opencv.git
cd vision_opencv
git checkout 1.12.8
1.2 编译
catkin_make -DPYTHON_EXECUTABLE=/usr/bin/python3
只需要在编译该库时,使用python3进行编译即可!
不需要修改任何地方,只需要添加编译命令参数即可!
1.3 测试代码
#!/usr/bin/env python3
import cv2
import numpy as np
from cv_bridge import CvBridge
from sensor_msgs.msg import Image
def main():
# 创建CvBridge实例
bridge = CvBridge()
# 创建一个OpenCV图像
opencv_image = np.zeros((480, 640, 3), dtype=np.uint8)
opencv_image[:] = (0, 255, 0) # 填充绿色
# 将OpenCV图像转换为ROS图像消息
ros_image = bridge.cv2_to_imgmsg(opencv_image, encoding="bgr8")
# 将ROS图像消息转换回OpenCV图像
opencv_image_converted = bridge.imgmsg_to_cv2(ros_image, desired_encoding="bgr8")
# 显示转换后的OpenCV图像
cv2.imshow("Converted Image", opencv_image_converted)
cv2.waitKey(0)
cv2.destroyAllWindows()
if __name__ == "__main__":
main()
二、catkin build编译
若上面不能解决,则参考下面链接:
https://blog.csdn.net/crazty/article/details/127126160
注意前面的apt安装包除了最后的ros-kinetic-cv-bridge
不需要安装,其它都需要安装,否则报错!
在catkin config配置环境时,只要是python3的环境就行,不用与conda的虚拟环境一样也可。
1 要使用python3版本的cv_bridge,需要source重新编译后的ros工作空间,然后再运行zed2的程序
2 如果系统中的opencv版本为4,则需要使用noetic版本的cv_bridge,即下载源码后要切换分支:
参考:https://blog.csdn.net/qq_41035283/article/details/120887112