从.bag文件中直接提取深度/RGB图像


    # coding:utf-8
    #!/usr/bin/python
     
import roslib;   
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
     
rgb_path = '/home/david/workspace/bags/rgb/'   #本地存储rgb彩色图文件的目录
depth_path= '/home/david/workspace/bags/depth/' #本地存储深度图文件的目录
     
class ImageCreator():
        def __init__(self):
            self.bridge = CvBridge()
            with rosbag.Bag('/home/andy/bag_folder/file_name.bag', 'r') as bag:  #要读取的bag文件;
                for topic,msg,t in bag.read_messages():
                    if topic == "camera/rgb/image_raw": #图像的topic;
                            try:
                                cv_image = self.bridge.imgmsg_to_cv2(msg,"bgr8")
                            except CvBridgeError as e:
                                print (e)
                            timestr = "%.6f" %  msg.header.stamp.to_sec()
                            #%.6f表示小数点后带有6位,可根据精确度需要修改;
                            image_name = timestr+ ".png" #图像命名:时间戳.png
                            cv2.imwrite(rgb_path + image_name, cv_image)  #保存;
                    elif topic == "camera/depth_registered/image_raw": #图像的topic;
                            try:
                                cv_image = self.bridge.imgmsg_to_cv2(msg,"16UC1")
                            except CvBridgeError as e:
                                print (e)
                            timestr = "%.6f" %  msg.header.stamp.to_sec()
                            #%.6f表示小数点后带有6位,可根据精确度需要修改;
                            image_name = timestr+ ".png" #图像命名:时间戳.png
                            cv2.imwrite(depth_path + image_name, cv_image)  #保存;
     
if __name__ == '__main__':
        #rospy.init_node(PKG)
        try:
            image_creator = ImageCreator()
        except rospy.ROSInterruptException:
            pass

缺点是:每次换一个bag都需要重新更改bag的名字

ps:出现报错:No module named xxx
       解决方法:pip install xxx

  • 0
    点赞
  • 5
    收藏
    觉得还不错? 一键收藏
  • 2
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论 2
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值