Как изменить разрешение видео в OpenCV на Python

Опубликовано: 14 Декабря, 2022

В этой статье мы опишем, как вы можете захватить каждый кадр из видео, а также изменить их размер в соответствии с вашими потребностями. Что мы точно сделаем, так это возьмем видео в качестве входных данных от пользователя и захватим его кадр за кадром. Кроме того, мы запускаем видео в цикле и сохраняем кадры изображения с определенными именами после изменения размера этих кадров.

Поэтапная реализация:

Шаг 1: Импорт библиотек

Здесь мы импортируем библиотеку cv2, cv2 — это пакет OpenCV, который помогает нам вызывать функции imread(), startWindowThread(), namedWindow() и imshow() соответственно.

import cv2

Шаг 2: Определите объект захвата видео

На этом шаге мы будем использовать функцию VideoCapture(), чтобы получить объект захвата видео для камеры. Здесь вы можете использовать либо свою камеру, либо напрямую загрузить видео из вашей системы.

vidcap = cv2.VideoCapture(“#Define the video path”)

Шаг 3: Захват видео кадр за кадром

Теперь мы захватим длину видео для запуска цикла. Кроме того, видео автоматически закрывается после захвата всех кадров.

success,image = vidcap.read()

Шаг 4: Объявите переменную

Затем объявите переменную и подсчитайте со значением 0. Эта переменная будет увеличиваться при выполнении цикла.

count = 0

Шаг 5: Создание цикла для запуска видео

Кроме того, мы создаем цикл while для запуска видео и сохранения всех кадров из вашего видео в вашей локальной системе.

while success:

Шаг 5.1: Кадровый захват видео

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

  success,image = vidcap.read()

Шаг 5.2: Изменение размера рамок изображения

На этом этапе мы использовали функцию resize() с определенными размерами, для которых необходимо установить рамки изображения.

  resize = cv2.resize(image, (#x-axis dimensions, #y-axis dimensions))

Шаг 5.3: Сохранение кадров с определенными именами

Позже мы сохраняем кадры изображения, размер которых мы изменили на последнем шаге. Также мы даем фреймам определенные имена с расширениями.

  cv2.imwrite(“%04d.jpg” % count, resize)

Шаг 5.4. Автоматическое закрытие видео после окончания

Кроме того, функция waitKey() используется для автоматического закрытия видео после окончания видео.

  if cv2.waitKey(10) == 27:
     break

Шаг 5.5 Увеличение переменной на 1

Наконец, мы увеличиваем значение объявленной переменной, считая на 1.

  count += 1

Пример:

В этом примере мы использовали видео (ссылку), из которого мы будем извлекать определенные кадры, изменять размер этих кадров и сохранять их с определенными именами на локальном компьютере.

Python3




# Python program to resize frame"s
# from video with aspect ratio
  
# Import the libraries
import cv2
  
# Define a video capture object
vidcap = cv2.VideoCapture("gfg_video.mp4")
  
# Capture video frame by frame
success, image = vidcap.read()
  
# Declare the variable with value 0
count = 0
  
# Creating a loop for running the video
# and saving all the frames
while success:
  
    # Capture video frame by frame
    success, image = vidcap.read()
  
    # Resize the image frames
    resize = cv2.resize(image, (700, 500))
  
    # Saving the frames with certain names
    cv2.imwrite("%04d.jpg" % count, resize)
  
    # Closing the video by Escape button
    if cv2.waitKey(10) == 27:
        break
  
    # Incrementing the variable value by 1
    count += 1

Выход: