ubuntu18.04上使用python3调用ROS的cv_bridge库

目录


一、编译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

最后编辑于
©著作权归作者所有,转载或内容合作请联系作者
【社区内容提示】社区部分内容疑似由AI辅助生成,浏览时请结合常识与多方信息审慎甄别。
平台声明:文章内容(如有图片或视频亦包括在内)由作者上传并发布,文章内容仅代表作者本人观点,简书系信息发布平台,仅提供信息存储服务。

相关阅读更多精彩内容

友情链接更多精彩内容