Я извлекаю кадры из нескольких видео в каталоге, используя 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 и перезаписывать?






Переменная count инициализируется каждый раз, когда вы вызываете функцию extractFrames, то есть один раз для каждого файла.
Вам нужно поставить инициализацию вне функции:
count = 0
def extractFrames(pathIn, pathOut):
cap = cv.VideoCapture(pathIn)
...