视频按帧截取图片

 视频按帧截取图片

注意:不能使用中文路径

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

 

posted @ 2020-12-14 10:08  ss120369192  阅读(391)  评论(1)    收藏  举报