opencv + python3 利用ros 的 cv_bridge 传送图像消息的一种替代方法
利用自定义的图像类型代替sensor_msgs/Image, python2可以使用cv_bridge,但是python3不可以使用cv_bridge,所以在python2节点使用cv_bridge,python3不使用cv_bridge, 利用自定义的消息类型在python2和python3节点传送图像数据。
1. 自定义图像消息类型 Image_Msg.msg
int32 height
int32 width
int32 channels
uint8[] data
python2节点:图像订阅相机图像消息后,利用自定义的图像消息类型将图像发送给另一个python3的节点
#!/usr/bin/env python
# -*- coding: utf-8 -*-
from __future__ import print_function
import sys
import rospy
import numpy as np
import os
from std_msgs.msg import String
from sensor_msgs.msg import Image
from cv_bridge import CvBridge, CvBridgeError
from nn_vs.msg import Image_Msg
import cv2
class image_listenner:
def __init__(self):
self.bridge = CvBridge()
self.image_sub = rospy.Subscriber("/probot_anno/hand_camera/hand_image_raw",Image,self.image_sub_callback)
self.image_pub = rospy.Publisher('/image_data', Image_Msg, queue_size

本文介绍了如何在opencv + python3环境中,通过自定义图像消息类型Image_Msg.msg来替代ROS的cv_bridge进行图像消息传递。在python2节点中订阅相机图像并使用cv_bridge处理,然后通过自定义消息发送到python3节点,实现python2和python3之间的图像数据传输。
最低0.47元/天 解锁文章
1954





