在 Python OpenCV 中制作裁剪帧的视频

Making a video of cropped frames in Python OpenCV

在我的程序中,我正在读取原始视频,然后裁剪每一帧,最后我需要制作所有裁剪帧的视频。
帧按我定义的大小(顶部、底部、左侧和右侧)裁剪,但不会将其保存到视频中。
我正在尝试的是:

input_video = cv2.VideoCapture(videosPath+"/"+video)
while True:
    ret, frame = input_video.read()
        if not ret:
            break
    for (top, right, bottom, left) in *****
        crop_img = frame[top:bottom, left:right]
        fourcc = cv2.VideoWriter_fourcc(*'XVID')
        output_movie = cv2.VideoWriter('videoPrueba.avi', fourcc, 30, (450, 360))
        output_movie.write(crop_img)

谢谢!

推荐的阶段是:readcropwrite 每次迭代。

我建议采用以下解决方案,而不是读取所有帧,然后裁剪所有帧然后写入所有帧:

  • while 循环上方打开输入和输出视频文件。
  • 在循环内部,每次迭代:读取一帧,裁剪它并将结果写入输出视频。
  • 最后,使用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()