Welcome to OGeek Q&A Community for programmer and developer-Open, Learning and Share
Welcome To Ask or Share your Answers For Others

Categories

0 votes
111 views
in Technique[技术] by (71.8m points)

python - 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. What's wrong between cv2 and arrays?

question from:https://stackoverflow.com/questions/65902327/cv2-writing-stream-from-array

与恶龙缠斗过久,自身亦成为恶龙;凝视深渊过久,深渊将回以凝视…
Welcome To Ask or Share your Answers For Others

1 Reply

0 votes
by (71.8m points)

I think that you lost the argument for out.write().

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

与恶龙缠斗过久,自身亦成为恶龙;凝视深渊过久,深渊将回以凝视…
OGeek|极客中国-欢迎来到极客的世界,一个免费开放的程序员编程交流平台!开放,进步,分享!让技术改变生活,让极客改变未来! Welcome to OGeek Q&A Community for programmer and developer-Open, Learning and Share
Click Here to Ask a Question

...