【ROS2&AI】电脑摄像头、intel-D435,利用ros2发布订阅图像(Python)

本文欲分享两个代码来实现图像的传输,利用ros2,ROS2~

配置:Ubuntu20.04 ; Python ;ROS2 foxy ; opencv ;电脑相机 or Intel-D435相机

与传统的传输列表、字符串msg不同(定义消息类型直接发送即可),利用ros2传输图像需要把图像frame转为image类型的msg。

流程如下:
opencv或者realsense获取得到的图像(frame)-->  np.array --> msg消息类型(利用CvBridge)

1. 利用电脑摄像头 传输图像,直接上代码

1.1 发送端 如下

#!/usr/bin/env python3
import rclpy
from rclpy.node import Node
import cv2
from cv_bridge import CvBridge, CvBridgeError
import numpy as np
import time
from sensor_msgs.msg import Image

class NodePublisher(Node):
    def __init__(self,name):
        super().__init__(name)
        self.get_logger().info("大家好,我是%s!" % name)

def main(args=None):
    height = 480
    width =  640
    capture = cv2.VideoCapture(0)
    #这里opencv的图像大小与ros发布的图像大小一致
    capture.set(cv2.CAP_PROP_FRAME_WIDTH, width)    
    capture.set(cv2.CAP_PROP_FRAME_HEIGHT, height)
    capture.set(cv2.CAP_PROP_FOURCC, cv2.VideoWriter_fourcc('M', 'J', 'P', 'G'))  

    rclpy.init()

    node = NodePublisher("Camera_image") # 实例化创建一个节点
    # 创建一个话题--image_data,定义其中的消息类型为Image
    image_pub = node.create_publisher(Image,"image_data",10) 

    bridge = CvBridg
评论 10
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值