python批處理MP4轉(zhuǎn)換為yuv

批處理MP4轉(zhuǎn)換為yuv,并保存width 和 height信息為mat文件

import os
import cv2
from os import path
import numpy as np
import scipy.io as scio
from ffmpy3 import FFmpeg
from subprocess import PIPE

Path_orig = 'G:/CRSR/test_seq/'
Path_train = 'G:/CRSR/train_yuv/'
Path_validation = 'G:/CRSR/validation_yuv/'

wdr = path.normpath(Path_orig)
subwdr = os.listdir(wdr)

widthList_train=[]
heightList_train=[]
widthList_validation=[]
heightList_validation=[]

count = 0 
for videoClass in subwdr:
    videoList = os.listdir(Path_orig+videoClass)
    for name in videoList:
        count =count+1
        name_path=Path_orig+videoClass+'/'+name
        cap=cv2.VideoCapture(name_path)
        width = int(cap.get(3))
        
        height = int(cap.get(4))
        
        fps = int(cap.get(5))
        framenum = int(cap.get(7))
        yuvname = str(count)+videoClass + '_'+str(width) +'x'+str(height)+'_'+str(framenum)+'_'+str(fps)+'_'+'.yuv'
            
        if name==videoList[-1]:
            widthList_validation.append(width)
            heightList_validation.append(height)
            ff = FFmpeg(inputs={name_path: None},outputs={Path_validation+yuvname: '-pix_fmt yuv420p -vsync passthrough'})
        else:
            widthList_train.append(width)
            heightList_train.append(height)
            ff = FFmpeg(inputs={name_path: None},outputs={Path_train+yuvname:'-pix_fmt yuv420p -vsync passthrough'})
        
        # print(ff.cmd)
        ff.run(stdout=PIPE,stderr=PIPE)
        # print(yuvname)

scio.savemat('G:/CRSR/para.mat', {'widthList_train': np.array(widthList_train),'heightList_train':np.array(heightList_train),\
               'widthList_validation':np.array(widthList_validation),'heightList_validation':np.array(heightList_validation)})
最后編輯于
?著作權(quán)歸作者所有,轉(zhuǎn)載或內(nèi)容合作請聯(lián)系作者
【社區(qū)內(nèi)容提示】社區(qū)部分內(nèi)容疑似由AI輔助生成,瀏覽時請結(jié)合常識與多方信息審慎甄別。
平臺聲明:文章內(nèi)容(如有圖片或視頻亦包括在內(nèi))由作者上傳并發(fā)布,文章內(nèi)容僅代表作者本人觀點(diǎn),簡書系信息發(fā)布平臺,僅提供信息存儲服務(wù)。

友情鏈接更多精彩內(nèi)容