1. ROSBAG提取制定topic图像
跟着朋友学习了一下如何在bag中提取带有时间戳的图像(我们主要取的是单通道的深度图像),感觉在ROS机器人中使用的非常普遍,闲话不多说,直接上完整的python代码。如果想看详细的ROSBAG解释的话可以看后面的debug细节。
#coding:utf-8
import rosbag
import cv2
from cv_bridge import CvBridge
path='/nfs/xmq/depth_pic/' # 存储图像的地址
bag_file = '0115d.bag'
bag = rosbag.Bag(bag_file, "r") # 载入bag文件
bag_data = bag.read_messages() # 利用迭代器返回三个值:{topic标签, msg数据, t时间戳}
bridge = CvBridge()
for topic, msg, t in bag_data:
if topic == "/camera/depth/image_rect_raw":
cv_image = bridge.imgmsg_to_cv2(msg, "16UC1") # 这里要注意图像的格式
print(cv_image.shape) # 避免图像是Nonetype