opencv视频创建空白帧并使用python编写
我正在尝试初始化一些视频的空白帧,并在ubuntu linux中使用opencv和python将其写入文件。我计划稍后在空白画布上添加更小的视频片段。典型的示例仅显示从某个输入源读取帧,但我正在尝试生成自己的帧。以下是我目前的代码:opencv视频创建空白帧并使用python编写,python,opencv,numpy,video,Python,Opencv,Numpy,Video,我正在尝试初始化一些视频的空白帧,并在ubuntu linux中使用opencv和python将其写入文件。我计划稍后在空白画布上添加更小的视频片段。典型的示例仅显示从某个输入源读取帧,但我正在尝试生成自己的帧。以下是我目前的代码: import numpy as np import cv2 xsp=640 ysp=480 chan=3 # Define the codec and create VideoWriter object fourcc = cv2.VideoWriter_fourcc
import numpy as np
import cv2
xsp=640
ysp=480
chan=3
# Define the codec and create VideoWriter object
fourcc = cv2.VideoWriter_fourcc(*'XVID')
out = cv2.VideoWriter('output.avi',fourcc, 20.0, (xsp,ysp))
numframes = 20
videoout = []
for i in range(1,numframes): # init frames
frame = np.zeros((xsp,ysp,chan),np.uint8)
videoout.append(frame)
for frame in videoout:
out.write(frame)
out.release()
使用上述代码,视频无法播放。在视频播放器中打开它会导致无法解复用内容的错误
但是,如果我通过打开一个视频文件并获取一个现有的视频帧+在其上放置一个黑色矩形来初始化视频帧,我就能够获得有效的视频
def initVideoFrame(videofile):
cap = cv2.VideoCapture(videofile)
ret, frame = cap.read()
ysp,xsp,chan = frame.shape
cv2.rectangle( frame, ( 0,0 ), ( xsp, ysp), ( 0,0,0 ), -1, 8 )
cap.release()
return frame
frame = initVideoFrame('s.mp4')
ysp,xsp,chan = frame.shape
# Define the codec and create VideoWriter object
fourcc = cv2.VideoWriter_fourcc(*'XVID')
out = cv2.VideoWriter('output.avi',fourcc, 20.0, (xsp,ysp))
numframes = 100
videoout = []
for i in range(1,numframes): # init frames
frame = initVideoFrame('s.mp4')
videoout.append(frame)
for frame in videoout:
out.write(frame)
out.release()
似乎uint8零数组构成的帧不足以写入有效的视频。我仍然缺少一些东西。blank\u image=np.zeros((高度,宽度,3),np.uint8)blank\u image=np.zeros((高度,宽度,3),np.uint8)的可能重复