Видео – популярный вид мультимедиа, который часто требует различных преобразований, таких как масштабирование, перевод и поворот, чтобы повысить его визуальную привлекательность или удовлетворить конкретным требованиям. В этой статье мы рассмотрим, как выполнять эти преобразования видео с помощью Python. Независимо от того, являетесь ли вы новичком или имеете некоторый опыт программирования, это руководство предоставит вам примеры кода и объяснит эти методы в простой и разговорной форме.
Масштабирование.
Масштабирование означает изменение размера видеокадра. Это может быть полезно для увеличения или уменьшения масштаба, настройки соотношения сторон или размещения видео в определенной области отображения. В Python библиотека OpenCV предоставляет функции для масштабирования видео. Вот пример фрагмента кода, демонстрирующий, как масштабировать видео в 0,5 раза:
import cv2
video = cv2.VideoCapture('input_video.mp4')
width = int(video.get(cv2.CAP_PROP_FRAME_WIDTH))
height = int(video.get(cv2.CAP_PROP_FRAME_HEIGHT))
output_width = int(width * 0.5)
output_height = int(height * 0.5)
output_video = cv2.VideoWriter('output_video.mp4', cv2.VideoWriter_fourcc(*'mp4v'), 30, (output_width, output_height))
while True:
ret, frame = video.read()
if not ret:
break
resized_frame = cv2.resize(frame, (output_width, output_height))
output_video.write(resized_frame)
video.release()
output_video.release()
Перевод.
Перевод предполагает изменение положения видеокадра. Его можно использовать для создания эффектов движения или исправления проблем с выравниванием. OpenCV предоставляет функции для перевода видео путем манипулирования координатами кадра. Вот пример фрагмента кода, демонстрирующий, как перевести видео на 50 пикселей по горизонтали и на 100 пикселей по вертикали:
import cv2
import numpy as np
video = cv2.VideoCapture('input_video.mp4')
output_video = cv2.VideoWriter('output_video.mp4', cv2.VideoWriter_fourcc(*'mp4v'), 30, (width, height))
while True:
ret, frame = video.read()
if not ret:
break
translation_matrix = np.float32([[1, 0, 50], [0, 1, 100]])
translated_frame = cv2.warpAffine(frame, translation_matrix, (width, height))
output_video.write(translated_frame)
video.release()
output_video.release()
Поворот.
Поворот позволяет поворачивать видеокадр на указанный угол. Его можно использовать для художественных эффектов, стабилизации изображения или коррекции ориентации. OpenCV предоставляет функции для поворота видеокадров с использованием матриц преобразования. Вот пример фрагмента кода, демонстрирующий, как повернуть видео на 45 градусов по часовой стрелке:
import cv2
import numpy as np
video = cv2.VideoCapture('input_video.mp4')
width = int(video.get(cv2.CAP_PROP_FRAME_WIDTH))
height = int(video.get(cv2.CAP_PROP_FRAME_HEIGHT))
output_width = width
output_height = height
output_video = cv2.VideoWriter('output_video.mp4', cv2.VideoWriter_fourcc(*'mp4v'), 30, (output_width, output_height))
while True:
ret, frame = video.read()
if not ret:
break
rotation_matrix = cv2.getRotationMatrix2D((width / 2, height / 2), 45, 1.0)
rotated_frame = cv2.warpAffine(frame, rotation_matrix, (output_width, output_height))
output_video.write(rotated_frame)
video.release()
output_video.release()
В этой статье мы рассмотрели, как выполнять масштабирование, перевод и поворот видео с помощью Python и библиотеки OpenCV. Мы предоставили примеры кода и объяснили концепции в доступной для новичков форме. Используя эти методы, вы можете легко улучшить свои видео или удовлетворить конкретные требования. Так что вперед, экспериментируйте с разными трансформациями и раскрывайте свой творческий потенциал!