我正在使用Open cv从目录中的一些视频中提取帧。在遍历文件时,我将获得的帧命名为frame0,frame1等。但是,当循环移至下一个视频时,它再次开始命名帧0,1,2 ...,因此所有旧帧都将被覆盖。这是我所做的:#To make a list of paths to all files in dirf=[]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 = 0while (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: breakcap.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开始重新覆盖?
1 回答

万千封印
TA贡献1891条经验 获得超3个赞
count每次调用函数时都会初始化变量extractFrames-即每个文件一次。
您需要将初始化放在函数之外:
count = 0
def extractFrames(pathIn, pathOut):
cap = cv.VideoCapture(pathIn)
...
添加回答
举报
0/150
提交
取消