简体   繁体   English

cv2 从数组写入 stream

[英]cv2 Writing stream from array

This code records video from a webcam:此代码从网络摄像头录制视频:

import cv2
w,h = 640,480
cap = cv2.VideoCapture(0,cv2.CAP_DSHOW)
out = cv2.VideoWriter('test1.mp4', cv2.VideoWriter_fourcc(*'XVID'), 24.0, (w,h))
while True:
    key = cv2.waitKey(1) & 0xFF
    if key == ord('q'):
        break
    ret, frame = cap.read()
    cv2.imshow('frame', frame)
    out.write(frame)

out.release()
cap.release()
cv2.destroyAllWindows()

It works, but i want to make it write list of frames:它有效,但我想让它写帧列表:

import cv2
w,h = 640,480
frames = []
cap = cv2.VideoCapture(0,cv2.CAP_DSHOW)
out = cv2.VideoWriter('test1.mp4', cv2.VideoWriter_fourcc(*'XVID'), 24.0, (w,h))
while True:
    key = cv2.waitKey(1) & 0xFF
    if key == ord('q'):
        break
    ret, frame = cap.read()
    cv2.imshow('frame', frame)
    frames.append(frame)

for frame in frames:
    out.write(frame)
out.release()
cap.release()
cv2.destroyAllWindows()

And this gives me a 4 kb file, that i can't open.这给了我一个 4 kb 的文件,我无法打开。 What's wrong between cv2 and arrays? cv2 和 arrays 之间有什么问题?

I think that you lost the argument for out.write() .我认为你失去了out.write()的论点。

for frame in frames:
    out.write(frame)
out.release()
cap.release()
cv2.destroyAllWindows()

Changing codec from 'XVID' to 'mp4v' seems to work将编解码器从“XVID”更改为“mp4v”似乎有效

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM