Я хочу сохранить кадры видео через определенные промежутки времени, используя python opencv module.
Мне нужно разделить видеофайл на 40 изображений. Но я не думаю об алгоритмах.
Моя идея:
Способ подсчета количества кадров, fps и интервала перехода:
length = int(cap.get(cv2.CAP_PROP_FRAME_COUNT))
fps = cap.get(cv2.CAP_PROP_FPS)
После подсчета числа кадров, fps и прыжка (пример):
D:\UCF-101\ApplyEyeMakeup\v_ApplyEyeMakeup_g01_c01.avi FPS : 25.0
D:\UCF-101\ApplyEyeMakeup\v_ApplyEyeMakeup_g01_c01.avi Length : 164
D:\UCF-101\ApplyEyeMakeup\v_ApplyEyeMakeup_g01_c01.avi Running time : 6.56
D:\UCF-101\ApplyEyeMakeup\v_ApplyEyeMakeup_g01_c01.avi 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
И я столкнулся с двумя проблемами:
Во всяком случае, если вы заинтересованы в моей проблеме, я научу вас подробно. Я не знаю, что сказать.
Важно то, что я хочу сохранять 40 изображений с регулярными интервалами независимо от длины изображения.
Пожалуйста, помогите мне...
Нет кадра, такого как рамка 3.25 (есть только 3 кадра, а не число с плавающей точкой)
Если вы совершите jump
с плавающей точкой, просто измените свое состояние на count % jump < 1
. Вы получите неравномерное расстояние между кадрами, но в каждом случае должно получиться 40 кадров.
Видео с общей длиной менее 30 кадров.
Просто установите jump
к 1, если количество кадров <= 40, и вы получите все доступные фреймы.