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文件夹一定要手动新建,否则存储图片失败!!!