Я хочу сохранить кадры видео через определенные промежутки времени, используя модуль python opencv.
Я должен разделить видеофайл на 40 изображений.Но я не думаю об алгоритмах.
Моя идея такова:
- Входной видеофайл.
- Подсчитывает количество кадров и кадров в секунду в видео.
- Возвращает интервал между кадрами.(длина / 40)
- Выполнить при
Способ подсчета количества кадров, кадров в секунду и интервала перехода:
length = int(cap.get(cv2.CAP_PROP_FRAME_COUNT))
fps = cap.get(cv2.CAP_PROP_FPS)
После подсчета количестваframe, fps и jump (Пример):
D:\UCF-101\ApplyEyeMakeup\v_ApplyEyeMakeup_g01_c01.avi's FPS : 25.0
D:\UCF-101\ApplyEyeMakeup\v_ApplyEyeMakeup_g01_c01.avi's Length : 164
D:\UCF-101\ApplyEyeMakeup\v_ApplyEyeMakeup_g01_c01.avi's Running time : 6.56
D:\UCF-101\ApplyEyeMakeup\v_ApplyEyeMakeup_g01_c01.avi's jump : 4 ( 4.1 )
, а вот цикл while:
while count < length and save < 40:
print("Count : ", count)
success, frame = cap.read()
cv2.imshow('Window', frame)
if count % jump == 0:
cv2.imwrite(save_path + LabelList[LabelNumber] + "\\" + FileList[FileNumber] + "_" + str(count) + ".jpg", frame)
save = save + 1
print("Saved! : ", save)
cv2.waitKey(1)
count = count + 1
И я столкнулся с двумя проблемами:
- Видеос общей длиной менее 30 кадров
- Нет такого кадра, как 3.25 кадра (всего 3 кадра, а не число с плавающей точкой)
В любом случае,Если вы заинтересованы в моей проблеме, я научу вас подробно.Я не знаю, что сказать.
Важно то, что я хочу сохранять 40 изображений через равные промежутки времени независимо от длины изображения.
Пожалуйста, помогите мне, брат ...