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))
나는 아래의 오류가 나타납니다. 나는 변수를 전달하는 데 실수를 저지르고 있다고 생각하기에 파이썬에 익숙하지 않습니다. 그러나 나는 어디 있는지 모르겠습니다. 나는이 프로그램에 약간의 조정의 문제를 해결할 수 있어요비디오 파일 파이썬의 프레임 폴더로
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
경우' 꼭 필요한 것은 아니며 매개 변수에'sys.argv'를 사용하십시오. 그건 그렇고,'main()'함수는 괜찮습니다. – Silencer
argparse가 필수 항목 인 것 같습니다.이 경우 오류가 무엇인지 감지 할 수 없습니다. –
문제는 전적으로 'argparse'를 사용하는 데 있습니다 - 제발, [mcve]를 제공하고 관련없는 것들을 섞어서는 안됩니다 opencv in | 'parser.add_argument'에 대한 첫 번째 호출의 의도는 무엇입니까? –