在 Python OpenCV 中制作裁剪帧的视频
Posted
技术标签:
【中文标题】在 Python OpenCV 中制作裁剪帧的视频【英文标题】:Making a video of cropped frames in Python OpenCV 【发布时间】:2020-02-24 19:02:21 【问题描述】:在我的程序中,我正在阅读原始视频,然后裁剪每一帧,最后我需要制作所有裁剪帧的视频。 帧按我定义的大小(上、下、左和右)进行裁剪,但不会将其保存到视频中。 我正在尝试的是以下内容:
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)
谢谢!
【问题讨论】:
【参考方案1】:推荐的阶段是:read、crop、write 每次迭代。
我建议使用以下解决方案,而不是读取所有帧,然后裁剪所有帧然后写入所有帧:
打开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()
【讨论】:
以上是关于在 Python OpenCV 中制作裁剪帧的视频的主要内容,如果未能解决你的问题,请参考以下文章