视频按帧截取图片
视频按帧截取图片
注意:不能使用中文路径
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)

浙公网安备 33010602011771号