import argparse
import os
#import skvideo.io
import cv2
def main(video_path, nth_sample, output_path):
if not os.path.exists(output_path):
os.makedirs(output_path)
cap = cv2.VideoCapture(video_path)
frame_num = 1
ret, frame = cap.read()
while ret:
frame_num += 1
if frame_num % nth_sample == 0:
cv2.imwrite(os.path.join(output_path, 'frame_' + str(frame_num).zfill(5) + '.png'), frame)
ret, frame = cap.read()
print (frame_num)
if __name__ == '__main__':
parser = argparse.ArgumentParser(description='Extrace frames from a video file')
parser.add_argument('C:/Users/Pratik/AppData/Local/Programs/Python/Python36-32/WhatsApp Video 2017-11-21 at 18.59.55.mp4',help='path to video file')
parser.add_argument('-n','--5',help='Sample rate to extract every nth frame',type = int,default=1)
parser.add_argument('-o','--C:/Users/Pratik/AppData/Local/Programs/Python/Python36-32/frame',help='path to output test images, defaults to out',default='out')
args = parser.parse_args()
main(**vars(args))
我收到以下错误,我是python的新手所以我认为我在传递变量时犯了一些错误,但我不确定在哪里。
usage: Frme.py [-h] [-n 5]
[-o C:/USERS/PRATIK/APPDATA/LOCAL/PROGRAMS/PYTHON/PYTHON36_32/FRAME]
C:/Users/Pratik/AppData/Local/Programs/Python/Python36-32/WhatsApp
Video 2017-11-21 at 18.59.55.mp4
Frme.py: error: the following arguments are required: C:/Users/Pratik/AppData/Local/Programs/Python/Python36-32/WhatsApp Video 2017-11-21 at 18.59.55.mp4
我能够通过程序中的微调来解决问题,这会根据您提到的帧数将输入的视频文件解析为帧。
import argparse
进口OS
导入系统
导入cv2
def x(video_path,nth_sample,output_path):
如果不是os.path.exists(output_path):os.makedirs(output_path)
cap = cv2.VideoCapture(video_path)
frame_num = 1
对,frame = cap.read()
而ret:frame_num + = 1 if frame_num%nth_sample == 0:cv2.imwrite(os.path.join(output_path,'frame_'+ str(frame_num).zfill(5)+'。png'),frame)ret ,frame = cap.read()print(frame_num)
def main():
parser = argparse.ArgumentParser(description ='从视频文件中取出帧')
parser.add_argument(' - v',' - video_path',help ='视频文件的路径')
parser.add_argument(' - l',' - nth_sample',help ='提取每个第n帧的采样率',type = int)
parser.add_argument(' - o',' - output_path',help ='输出测试图像的路径,默认为out')
args = parser.parse_args()
X(**其(参数))
如果name =='main':main()