[英]How to still frames to a video with cv2.VideoWriter in a function
当通过函数调用传递cv2.VideoWriter
对象时,我似乎无法让cv2.VideoWriter
将任何帧写入视频。 我不知道它是否是一个不可变的对象,这可能是原因?
我知道当我只添加没有使用函数的随机单个帧时,这是有效的。
我试过从每个函数调用返回并存储VideoWriter对象而没有结果。
这有效:
import cv2
fourcc = cv2.VideoWriter_fourcc(*'XVID')
vid = cv2.VideoWriter('vid.avi', fourcc, 1, (512, 512))
img = cv2.imread('dog.png')
vid.write(img)
img = cv2.imread('cat.png')
vid.write(img)
vid.release()
但这不是使用vid作为参数的函数调用:
import cv2
def add_img(vid):
img = cv2.imread('dog.png')
vid.write(img)
img = cv2.imread('cat.png')
vid.write(img)
fourcc = cv2.VideoWriter_fourcc(*'XVID')
vid = cv2.VideoWriter('vid.avi', fourcc, 1, (512, 512))
add_img(vid)
vid.release()
我没有得到任何错误,但它根本不会添加任何图像......
不,这不是预期的行为,我测试了以下代码,它只是工作正常。 我正在创建一个100帧的随机视频文件,它被注入到方法中。
import cv2
import numpy as np
fourcc = cv2.VideoWriter_fourcc(*'MJPG')
vid_ = cv2.VideoWriter('/Users/anmoluppal/PycharmProjects/testing/temp/vid.avi', fourcc, 30, (640, 480))
def create_image(vid):
for i in xrange(100):
mat = np.random.randint(0, 255, (480,640,3)).astype('uint8')
vid.write(mat)
create_image(vid_)
vid_.release()
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.