视频文件在Python中构建文件夹

问题描述 投票:0回答:1
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
python-3.x opencv
1个回答
0
投票

我能够通过程序中的微调来解决问题,这会根据您提到的帧数将输入的视频文件解析为帧。

import argparse

进口OS

导入系统

import skvideo.io

导入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()

© www.soinside.com 2019 - 2024. All rights reserved.