OpenCV: узнать число кадров у видео


OpenCV

При работе с видео-файлами — очень часто возникает вопрос: какое число кадров содержится в видео-файле?

OpenCV позволяет ответить на этот вопрос двумя способами:

  1. Использовать метод cv::VideoCapture::get() c параметром CAP_PROP_FRAME_COUNT.
  2. Просто последовательно посчитать все кадры видео вручную.

Первый способ, разумеется, быстрее, так как он возвращает данные из мета-информации видео-файла, но эта информация может быть не всегда корректной.

Пример использования обоих методов на Python:

#!/usr/bin/env python3

import cv2

file_path = "./video.mp4"

cap = cv2.VideoCapture(file_path)

if cap.isOpened() == False:
    print("[!] Cant open video:", file_path)
    exit(-1)

frame_number = int(cap.get(cv2.CAP_PROP_FRAME_COUNT))

print("frame_number:", frame_number)

frame_counter = 0
while True:
    ret, frame = cap.read()
    if ret is False:
        break
    frame_counter += 1
    
cap.release()
print("frame_counter:", frame_counter)

Пример работы:

$ ./test_cv_frame_counter.py
frame_number: 2166
frame_counter: 2166

Однако, на другом файле (формата avi) — первый метод уже возвращает ошибочные данные:

$ ./test_cv_frame_counter.py 
frame_number: 25544
frame_counter: 640

Таким образом, хотя второй метод и занимает намного больше времени, но полученное число кадров будет точным 🙂

Ссылки

По теме


Добавить комментарий

Arduino

Что такое Arduino?
Зачем мне Arduino?
Начало работы с Arduino
Для начинающих ардуинщиков
Радиодетали (точка входа для начинающих ардуинщиков)
Первые шаги с Arduino

Разделы

  1. Преимуществ нет, за исключением читабельности: тип bool обычно имеет размер 1 байт, как и uint8_t. Думаю, компилятор в обоих случаях…

  2. Добрый день! Я недавно начал изучать программирование под STM32 и ваши уроки просто бесценны! Хотел узнать зачем использовать переменную типа…

3D-печать AI Arduino Bluetooth CraftDuino DIY Google IDE iRobot Kinect LEGO OpenCV Open Source Python Raspberry Pi RoboCraft ROS swarm ИК автоматизация андроид балансировать бионика версия видео военный датчик дрон интерфейс камера кибервесна манипулятор машинное обучение наше нейронная сеть подводный пылесос работа распознавание робот робототехника светодиод сервомашинка собака управление ходить шаг за шагом шаговый двигатель шилд юмор

OpenCV
Робототехника
Будущее за бионическими роботами?
Нейронная сеть - введение