Рекомендуемые этапы: чтение , кадрирование , запись каждая итерация.
Вместо того, чтобы читать все кадры, затем обрезать все кадры, а затем записывать все кадры, я предлагаю следующее решение:
- Откройте как входные, так и выходные видеофайлы выше
while
l oop. - Внутри l oop каждая итерация: прочитайте кадр, обрежьте его и запишите результат в выходное видео.
- В конце используйте
output_movie.release()
для закрытия средства записи видео.
Вот пример кода:
import cv2
top, right, bottom, left = 10, 450+10, 360+10, 10 # Sample values.
input_video = cv2.VideoCapture('Sample_Vid.mp4')
fourcc = cv2.VideoWriter_fourcc(*'XVID')
output_movie = cv2.VideoWriter('videoPrueba.avi', fourcc, 30, (450, 360))
while True:
ret, frame = input_video.read()
if not ret:
break
# Following crop assumes the video is colored,
# in case it's Grayscale, you may use: crop_img = frame[top:bottom, left:right]
crop_img = frame[top:bottom, left:right, :]
output_movie.write(crop_img)
# Closes the video writer.
output_movie.release()