Я хочу сохранить кадры видео через определенные промежутки времени с помощью модуля Python OpenCV

1

Я хочу сохранить кадры видео через определенные промежутки времени, используя python opencv module.

Мне нужно разделить видеофайл на 40 изображений. Но я не думаю об алгоритмах.

Моя идея:

  1. Входной видеофайл.
  2. Подсчитывает количество кадров и кадров в видео.
  3. Возвращает интервал между кадрами. (длина /40)
  4. Выполнить

Способ подсчета количества кадров, 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

И я столкнулся с двумя проблемами:

  1. Видео с общей длиной менее 30 кадров
  2. Нет кадра, такого как рамка 3.25 (есть только 3 кадра, а не число с плавающей точкой)

Во всяком случае, если вы заинтересованы в моей проблеме, я научу вас подробно. Я не знаю, что сказать.

Важно то, что я хочу сохранять 40 изображений с регулярными интервалами независимо от длины изображения.

Пожалуйста, помогите мне...

Теги:
opencv
opencv-python
video-capture

1 ответ

0
Лучший ответ

Нет кадра, такого как рамка 3.25 (есть только 3 кадра, а не число с плавающей точкой)

Если вы совершите jump с плавающей точкой, просто измените свое состояние на count % jump < 1. Вы получите неравномерное расстояние между кадрами, но в каждом случае должно получиться 40 кадров.

Видео с общей длиной менее 30 кадров.

Просто установите jump к 1, если количество кадров <= 40, и вы получите все доступные фреймы.

  • 0
    Во второй задаче, если я установил jump = 1 , тогда я могу получить только 30 изображений. Мне нужно ровно 40 изображений.
  • 0
    Какова ваша цель в производстве 40 кадров. Хотите повторить некоторые кадры? Вы хотите интерполировать кадры? Не могли бы вы просто повторить последний кадр до 40? Это не понятно из вопроса
Показать ещё 1 комментарий

Ещё вопросы

Сообщество Overcoder
Наверх
Меню