循环重置计数并覆盖文件

我正在使用Open cv从目录中的一些视频中提取帧。在遍历文件时,我将获得的帧命名为frame0,frame1等。但是,当循环移至下一个视频时,它再次开始命名帧0,1,2 ...,因此所有旧帧都将被覆盖。


这是我所做的:


#To make a list of paths to all files in dir

f=[]

for dirpath, subdir, files in os.walk(r'C:\Users\user\Desktop\Files'):

for x in files:

    f.append(os.path.join(dirpath, x))

提取帧的功能:


def extractFrames(pathIn, pathOut):


cap = cv.VideoCapture(pathIn)

count = 0


while (cap.isOpened()):

    ret, frame = cap.read()


    if ret == True:

        print('Read %d frame: ' % count, ret)

        cv.imwrite(os.path.join(pathOut, "frame{:d}.jpg".format(count)), 

frame)  

        count += 1

    else:

        break

cap.release()

cv.destroyAllWindows()

然后我执行代码:


pathOut=r'C:\Users\User\Desktop\Frames'

def main():

    for i in f:

        extractFrames(i, pathOut)


if __name__=="__main__":

    main()

我该如何纠正,以便当循环在创建n帧后遇到下一个视频时,它开始将它们命名为n + 1,n + 2...。而不是从0开始重新覆盖?


12345678_0001
浏览 170回答 1
1回答

万千封印

count每次调用函数时都会初始化变量extractFrames-即每个文件一次。您需要将初始化放在函数之外:count = 0def extractFrames(pathIn, pathOut):  cap = cv.VideoCapture(pathIn)  ...
打开App,查看更多内容
随时随地看视频慕课网APP

相关分类

Python