• python工具-将视频按帧截取图片(附代码)


    描述:将一个视频流按帧数截取大量的图片

    用途:AI的数据集制作,得到大量的图片,之后将其打标签

    更改的地方

    1.default--间隔的帧数   2.input/output--输入视频的路径、存放截取图片的路径 (将路径放入后面的‘ ’中即可)前面加r可表示绝对路径 eg:

    1 args = parser.parse_args(['--input',r'F:data_videoIMG_4395.MOV','--output',r'F:data_rgb_pic7video'])

    直接上代码

     1 import cv2
     2 import argparse
     3 import os
     4 def parse_args():
     5     """
     6     Parse input arguments
     7     """
     8     parser = argparse.ArgumentParser(description='Process pic')
     9     parser.add_argument('--input', help='video to process', dest='input', default=None, type=str)
    10     parser.add_argument('--output', help='pic to store', dest='output', default=None, type=str)
    11     #default为间隔多少帧截取一张图片
    12     parser.add_argument('--skip_frame', dest='skip_frame', help='skip number of video', default=100, type=int)
    13     #input为输入视频的路径 ,output为输出存放图片的路径
    14     args = parser.parse_args(['--input','','--output',''])
    15     return args
    16  
    17 def process_video(i_video, o_video, num):
    18     cap = cv2.VideoCapture(i_video)
    19     num_frame = cap.get(cv2.CAP_PROP_FRAME_COUNT)
    20     expand_name = '.jpg'
    21     if not cap.isOpened():
    22         print("Please check the path.")
    23     cnt = 0
    24     count = 0
    25     while 1:
    26         ret, frame = cap.read()
    27         cnt += 1
    28         #  how
    29         # many
    30         # frame
    31         # to
    32         # cut
    33         if cnt % num == 0:
    34             count += 1
    35             cv2.imwrite(os.path.join(o_video, str(count) + expand_name), frame)
    36  
    37         if not ret:
    38             break
    39  
    40 if __name__ == '__main__':
    41     args = parse_args()
    42     if not os.path.exists(args.output):
    43         os.makedirs(args.output)
    44     print('Called with args:')
    45     print(args)
    46     process_video(args.input, args.output, args.skip_frame)

    参考

    https://blog.csdn.net/qq_36190978/article/details/85284484

  • 相关阅读:
    初学者一些常用的SQL语句(一)
    java小知识
    ArrayList底层实现原理
    JVM原理
    一个简单的登陆注册页面(希望可以帮到您)
    数据结构
    C++/C
    C的函数指针与指针函数
    函数指针与指针函数
    对数据库通用性的更新操作(ssh)
  • 原文地址:https://www.cnblogs.com/bob-jianfeng/p/11140444.html
Copyright © 2020-2023  润新知