实验平台 ubuntu18.04
实验目的 掌握python ros1 bag 包的离线读取
实现对图像数据的读取显示
rosbag play *.bag跳过消息的订阅与数据的播放,直接使用python 读取离线bag 包数据。
import os
import sys
import rospy
import rosbag
bagfilepath = "./*.bag"
bag = rosbag.Bag(bagfilepath, "r")读取topic数据
bag_data = bag.read_messages("你自定义的消息名称")函数解析数据
for i,(topic, msg, t) in enumerate(bag_data):
call_back(msg)消息就会直接传到call_back函数里,函数的定义如下即可
def call_back(msg):
#你的处理过程
#数据就在msg里下面是一个图像解析的例子
首先,准备一个带有图像数据的bag包
#coding:utf-8
import rosbag
import rospy
import cv2
from cv_bridge import CvBridge
from sensor_msgs.msg import Image
bag_file = './all.bag'
bag = rosbag.Bag(bag_file, "r")定义回调函数,当然并不是回调机制触发的,只是离线使用
def call_back_image(msg):
cv_image = bridge.compressed_imgmsg_to_cv2(msg, "bgr8")
cv2.imshow("Image window", cv_image)
cv2.waitKey(1)数据读取后回调解析数据并显示
bridge = CvBridge()
bag_data = bag.read_messages('你的消息名称')
for topic, msg, t in bag_data:
call_back_image(msg)本次实验使用的是经过压缩的Image 格式图像需要通过CvBridge 进行转换,转换成opencv 的数据格式,即可显示
实验结果如下所示:
| 留言与评论(共有 0 条评论) “” |