将rosbag record得到的bag文件恢复图片格式

Python代码如下

#!/usr/bin/python

# Extract images from a bag file.

#PKG = 'beginner_tutorials'
import roslib;   #roslib.load_manifest(PKG)
import rosbag
import rospy
import cv2
from sensor_msgs.msg import Image
from cv_bridge import CvBridge
from cv_bridge import CvBridgeError

# Reading bag filename from command line or roslaunch parameter.
#import os
#import sys

class ImageCreator():

    def __init__(self):
        self.bridge = CvBridge()
        with rosbag.Bag('newbag.bag', 'r') as bag:
            for topic,msg,t in bag.read_messages():
                if topic == "/mynteye/left_rect/image_rect":
                        try:
                            cv_image = self.bridge.imgmsg_to_cv2(msg,"bgr8")
                        except CvBridgeError as e:
                            print e
                        timestr = "%.9f" %  msg.header.stamp.to_sec()
                        image_name ="/home/zhangq/kalibr_workspace/test/cam0/" + timestr+ ".png" 
                        cv2.imwrite(image_name, cv_image)
                elif topic == "/mynteye/right_rect/image_rect":
                        try:
                            cv_image = self.bridge.imgmsg_to_cv2(msg,"bgr8")
                        except CvBridgeError as e:
                            print e
                        timestr = "%.9f" %  msg.header.stamp.to_sec()
                        image_name = "/home/zhangq/kalibr_workspace/test/cam1/" + timestr+ ".png"
                        cv2.imwrite(image_name, cv_image)  
                # else:
                #         try:
                #             cv_image = self.bridge.imgmsg_to_cv2(msg,"bgr8")
                #         except CvBridgeError as e:
                #             print e
                #         timestr = "%.6f" %  msg.header.stamp.to_sec()
                #         image_name = "/home/zhangq/dataset/cam1" + timestr+ ".png" 
                #         cv2.imwrite(image_name, cv_image)

if __name__ == '__main__':

    #rospy.init_node(PKG)

    try:
        image_creator = ImageCreator()
    except rospy.ROSInterruptException:
        pass

这里一定要注意的是,存储的cam0、cam1文件夹一定要手动新建,否则存储图片失败!!!

猜你喜欢

转载自blog.csdn.net/ZHAGNQ/article/details/84037646
今日推荐