1

次のように画像メッセージを発行する ROS 2 のパブリッシャーがあります。

#!/usr/bin/env python3
# Revision $Id$

import rclpy
from rclpy.node import Node
from std_msgs.msg import String
from cv_bridge import CvBridge
from sensor_msgs.msg import Image
import cv2
import numpy as np


class MinimalPublisher(Node):

    def __init__(self):

        super().__init__('minimal_publisher')
        self.publisher_ = self.create_publisher(Image, 'Image', 10)
        timer_period = 0.5  # seconds
        self.timer = self.create_timer(timer_period, self.timer_callback)
        self.i = 0
        self.im_list = []
        
        self.cv_image = cv2.imread('test.jpg') ### an RGB image 
        self.bridge = CvBridge()
       
    def timer_callback(self):
        
        self.publisher_.publish(self.bridge.cv2_to_imgmsg(np.array(self.cv_image), "bgr8"))
        self.get_logger().info('Publishing an image')
       

def main(args=None):

    rclpy.init(args=args)
    minimal_publisher = MinimalPublisher()
    rclpy.spin(minimal_publisher)
    minimal_publisher.destroy_node()
    rclpy.shutdown()

if __name__ == '__main__':
    main()

単一の画像で問題なく動作します。しかし、指定された形状の画像のバッチを公開したい:

[12, 3, 224, 224] => [バッチ、チャネル、幅、高さ]

画像のリストとして送信しようとしましたが、失敗しました。その方法は?

より詳しい情報:

python 3.6
ROS 2 - 雄弁な (ソースからビルド)
Ubuntu 18

4

1 に答える 1