• python提取bag文件中的图片数据


    import argparse
    import pyrealsense2 as rs
    import numpy as np
    import cv2
    import os
    
    """
    this is a file for convert .bag files to .png files for RealSense RGB-D data
    """
    
    # every n_skip, save one image
    n_skip = 10
    
    
    def main():
        if not os.path.exists(args.depth_directory):
            os.mkdir(args.depth_directory)
        if not os.path.exists(args.color_directory):
            os.mkdir(args.color_directory)
        try:
            pipeline = rs.pipeline()
            config = rs.config()
            rs.config.enable_device_from_file(config, args.input, repeat_playback=False)
    
            config.enable_stream(rs.stream.depth, 848, 480, rs.format.z16, 30)
            config.enable_stream(rs.stream.color, 640, 480, rs.format.rgb8, 30)
    
            pipeline.start(config)
    
            rs.align(rs.stream.color)
            # start to convert
            i = 0
            while i <= 300:  # fps = 30, usually, each video lasts around 10 sec.
                frames = pipeline.wait_for_frames()
                print("num", frames.frame_number)
                if i % n_skip == 0:
                    print("Saving frame:", i)
    
                    # saving depths
                    depth_frame = frames.get_depth_frame()
                    depth_image = np.asanyarray(depth_frame.get_data())
                    cv2.imwrite(args.depth_directory + "/" + str(i).zfill(6) + ".png", depth_image)
    
                    # saving RGBs
                    color_frame = frames.get_color_frame()
                    color_image = np.asanyarray(color_frame.get_data())
                    print(color_image.shape)
                    cv2.imwrite(args.color_directory + "/" + str(i).zfill(6) + ".png", color_image)
                i += 1
    
        finally:
            pass
    
    
    if __name__ == "__main__":
        parser = argparse.ArgumentParser()
        parser.add_argument("-d_d", "--depth_directory", type=str, help="Path to save the depth images")
        parser.add_argument("-c_d", "--color_directory", type=str, help="Path to save the RGB images")
        parser.add_argument("-i", "--input", type=str, help="Bag file to read")
        args = parser.parse_args()
    
        main()
    
    不论你在什么时候开始,重要的是开始之后就不要停止。 不论你在什么时候结束,重要的是结束之后就不要悔恨。
  • 相关阅读:
    为何没有.aspx.designer.cs文件?
    ItemDataBound的用法
    DataList控件 属性全攻略
    给LinkButton添加href、target属性
    给文本框添加灰色提示文字
    转载::深入研究DataList分页方法
    WCF 第六章 序列化与编码 保留引用和循环引用
    WCF 第六章 序列化和编码之NetDataContractSerializer
    WCF 第六章 序列化与编码 比较WCF序列化选项
    WCF 第六章 序列化和编码 使用代理序列化类型
  • 原文地址:https://www.cnblogs.com/yunhgu/p/15237083.html
Copyright © 2020-2023  润新知