cher1111 2023-10-07 16:06 采纳率: 50%
浏览 6
已结题

rosbag文件中读取图像消息

opencv版本为4.2,ubantu20.04,ros为noetic,使用ROS、vscode、opencv编写两个代码,确定视频地址后,把视频转为rosbag进行发布,在接收端接收图像,并实时拼接图像发布融合大图并显示和保存。(视频转长图,视频是一个平滑移动的视频,转为一张长图)

  • 写回答

2条回答 默认 最新

  • 专家-赤兔[在线] 全栈领域优质创作者 2023-10-07 17:23
    关注

    引自强大而免费的微信小程序:皆我百晓生。如有帮助,还望采纳。


    下面是一个使用ROS和OpenCV读取rosbag文件中的图像消息,并进行拼接、显示和保存的示例代码:

    import rosbag
    import cv2
    from sensor_msgs.msg import Image
    from cv_bridge import CvBridge
    import numpy as np
    
    bag_file = "path_to_your_rosbag.bag"  # 替换为你的rosbag文件路径
    output_file = "path_to_your_output_image.jpg"  # 替换为输出图像的保存路径
    
    # 定义回调函数,处理图像消息
    def image_callback(msg):
        bridge = CvBridge()
        cv_image = bridge.imgmsg_to_cv2(msg, desired_encoding='passthrough')
        cv_image = cv2.cvtColor(cv_image, cv2.COLOR_BGR2RGB)
        images.append(cv_image)
    
    # 读取rosbag文件
    bag = rosbag.Bag(bag_file)
    
    # 定义图像消息的话题名称
    image_topic = "/your_image_topic"  # 替换为你的图像消息话题名称
    
    # 遍历rosbag文件并处理图像消息
    images = []
    for topic, msg, t in bag.read_messages(topics=[image_topic]):
        image_callback(msg)
    
    # 垂直拼接图像
    concatenated_image = np.vstack(images)
    
    # 显示拼接后的图像
    cv2.imshow("Concatenated Image", concatenated_image)
    cv2.waitKey(0)
    cv2.destroyAllWindows()
    
    # 保存拼接后的图像
    cv2.imwrite(output_file, concatenated_image)
    
    # 关闭rosbag文件
    bag.close()
    

    确保将path_to_your_rosbag.bag替换为你的rosbag文件的路径,并将path_to_your_output_image.jpg替换为你希望保存拼接图像的路径。

    此代码假设图像消息的编码格式为BGR,如果图像消息的编码格式不是BGR,请相应地调整代码中的desired_encoding参数。

    在代码中,我们使用了sensor_msgs/Image消息和CvBridge库来在ROS和OpenCV之间进行图像数据的转换。我们遍历rosbag文件,找到图像消息,并将它们转换为OpenCV可用的格式进行后续处理。

    最后,我们将拼接后的图像显示出来,并保存为指定的文件。

    评论

报告相同问题?

问题事件

  • 已结题 (查看结题原因) 10月7日
  • 赞助了问题酬金15元 10月7日
  • 修改了问题 10月7日
  • 创建了问题 10月7日

悬赏问题

  • ¥15 Python 如何安装 distutils模块
  • ¥15 关于#网络#的问题:网络是从楼上引一根网线下来,接了2台傻瓜交换机,也更换了ip还是不行
  • ¥15 资源泄露软件闪退怎么解决?
  • ¥15 CCF-CSP 2023 第三题 解压缩(50%)
  • ¥30 comfyui openpose报错
  • ¥20 Wpf Datarid单元格闪烁效果的实现
  • ¥15 图像分割、图像边缘提取
  • ¥15 sqlserver执行存储过程报错
  • ¥100 nuxt、uniapp、ruoyi-vue 相关发布问题
  • ¥15 浮窗和全屏应用同时存在,全屏应用输入法无法弹出