Python 尝试从多个帧创建视频

Python 尝试从多个帧创建视频,python,opencv,Python,Opencv,我正在尝试从opencv捕获的多个帧创建一个视频,并将其摄入卡夫卡。我收到一个图像帧的字节字符串,并已通过写入jpeg、使用cv2.imshow…等显示来验证它是否有效。我似乎无法克服的是从多个帧创建视频剪辑 这是我目前的代码: import cv2 import numpy as np from kafka import KafkaConsumer consumer = KafkaConsumer('cam', bootstrap_servers=['localhost:9092']) f

我正在尝试从opencv捕获的多个帧创建一个视频,并将其摄入卡夫卡。我收到一个图像帧的字节字符串,并已通过写入jpeg、使用cv2.imshow…等显示来验证它是否有效。我似乎无法克服的是从多个帧创建视频剪辑

这是我目前的代码:

import cv2
import numpy as np
from kafka import KafkaConsumer

consumer = KafkaConsumer('cam', bootstrap_servers=['localhost:9092'])

fourcc = cv2.VideoWriter_fourcc(*'DIVX')
out = cv2.VideoWriter('test.avi', fourcc, 20.0, (1920, 1080))
i = 0

for message in consumer:

    print("message.topic=%s, message.partition=%d, message.offset=%d, key=%s" % (message.topic, message.partition,
                                                                                 message.offset, message.key))
    i += 1

    if i == 50:
        break

    nparr = np.fromstring(message.value, np.uint8)
    img = cv2.imdecode(nparr, cv2.IMREAD_COLOR)

    cv2.imshow('THIS IS THE CURRENT FRAME', img)

    out.write(img)

    if (cv2.waitKey(1) & 0xFF) == ord('q'):  # Hit `q` to exit
        break

out.release()
cv2.destroyAllWindows()

非常感谢任何提示/帮助

我在我的机器上测试了一些类似的代码,发现了几个潜在的问题:

如果在本例中,您的img的尺寸不完全正确1920、1080,则OpenCV会自动拒绝向VideoWriter写入数据。在写入输出之前,尝试img=cv2.resizeimg、1920、1080之类的操作

FOURCC引用的编解码器可能不存在-如果您签出.isOpened,您应该能够发现这是否是问题所在