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