首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >如何用OpenCV处理来自ROS2的图像消息

如何用OpenCV处理来自ROS2的图像消息
EN

Stack Overflow用户
提问于 2022-06-20 16:15:36
回答 1查看 1.1K关注 0票数 -1

我正在尝试使用OpenCV处理来自ROS2的图像消息。

我试图用ROS2将OpenCV图像转换为bridge.imgmsg_to_cv2(),但是它没有工作。这是我的代码:

代码语言:javascript
复制
import rclpy
from rclpy.node import Node

from std_msgs.msg import String
from sensor_msgs.msg import Image

import numpy as np
import cv2 as cv
from cv_bridge import CvBridge
bridge = CvBridge()

class MinimalSubscriber(Node):

    def __init__(self):
        ...

    def listener_callback(self, msg):
        self.get_logger().info('1. I heard: "%s"' % msg.width)
        self.get_logger().info('2. I heard: "%s"' % msg.encoding)
        self.cv_image = bridge.imgmsg_to_cv2(msg, 'bgra8')
        self.get_logger().info('3. I heard: "%s"' % self.cv_image)


def main(args=None):
    ...

if __name__ == '__main__':
    main()

产出如下:

代码语言:javascript
复制
[INFO] [1655741136.342080392] [minimal_subscriber]: 1. I heard: "512"
[INFO] [1655741136.342407086] [minimal_subscriber]: 2. I heard: "bgra8"
[INFO] [1655741136.343235582] [minimal_subscriber]: 3. I heard: "[[[180 130  70 255]
  [180 130  70 255]
  [180 130  70 255]
  ...
  [180 130  70 255]
  [180 130  70 255]
  [180 130  70 255]]
.....

有谁可以帮我?

EN

回答 1

Stack Overflow用户

发布于 2022-06-20 20:41:01

您尝试将图像数据记录到ROS Node控制台,该控制台只能显示文本。如果要实际显示图像,则需要:

  1. 将CvImage转换回ROS消息.

代码语言:javascript
复制
image_message = bridge.cv2_to_imgmsg(cv_image, encoding="passthrough")

  1. 将图像消息发布到您选择的主题.

代码语言:javascript
复制
    try:
      self.image_pub.publish(image_message)
    except CvBridgeError as e:
      print(e)

  1. 收听您的主题,并使用RQT或image_viewer主题显示图像:

rosrun image_view image_view image:=/your/topic/path

票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/72690021

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档