cv2 python 帧可以显示,但不能保存到文件

cv2 python frames can be shown, but not saved to file

我正在尝试录制视频剪辑。 我有一个创建框架的对象“观察者”。

当我“imshow”图像时 - 我可以看到一切正常。 我正在生成一个“avi”文件。但是当我尝试查看它时 - 它是空的。剪辑是0秒的黑屏。

我错过了什么?

frames_count = 0

fourcc = cv2.VideoWriter_fourcc(*'XVID')
writer = cv2.VideoWriter('output.avi', fourcc, 15.0, frame_size)
while True:
    img_pil = observer.get()
    draw = ImageDraw.Draw(img_pil)

    frame = cv2.cvtColor(np.array(img_pil), cv2.COLOR_BGR2GRAY)
    writer.write(frame)
    cv2.imshow(f"frame (q: {observer.q.qsize()})", frame)
    frames_count += 1

    if cv2.waitKey(1) & 0Xff == ord('q'):
        break
    if frames_count > 30:
        break

writer.release()

问题是图片是灰度的。 这一行:

writer = cv2.VideoWriter('output.avi', fourcc, 15.0, frame_size)

应替换为:

writer = cv2.VideoWriter('output.avi', fourcc, 15.0, frame_size,0)