在开始修改视频帧之前,我想先演示一个非常简单的复制视频的例子。然而,输出的output.avi文件与原始的2.8 MB barriers.avi文件相比是一个5KB的损坏文件。我使用的是OpenCV 4.2.0版本和Python 3.7.7版本。
以下是代码:
import cv2
input = cv2.VideoCapture("../video/barriers.avi")
height = int(input.get(cv2.CAP_PROP_FRAME_HEIGHT))
width = int(input.get(cv2.CAP_PROP_FRAME_WIDTH))
fourcc = cv2.VideoWriter_fourcc(*'DIVX')
out = cv2.VideoWriter('../video/output5.avi', fourcc, 30, (height, width), isColor=True)
while input.isOpened():
# get validity boolean and current frame
ret, frame = input.read()
# if valid tag is false, loop back to start
if not ret:
break
else:
out.write(frame)
input.release()
out.release()
如果我打印出框架形状,会得到以下结果:
(480, 640, 3)
注意:其他堆栈溢出的解决方案均未能帮助。
编辑:如果使用cv2.imshow(),则所有帧都可以正常显示。
frame = cv2.resize(frame, (width, height))
。 - Ahmet(宽度, 高度)
。但是当你获取图像尺寸大小时,例如:image.shape[:2]
返回的是高度和宽度。我已经更新了代码,请告诉我是否有任何问题。 - Ahmet