【问题标题】:Trying to create video from multiple frames尝试从多个帧创建视频
【发布时间】:2018-12-17 11:08:06
【问题描述】:

我正在尝试从多个帧创建视频(由 opencv 捕获并摄取到 kafka 中)。我收到图像(帧)的字节字符串并验证它是有效的(通过写入 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()

非常感谢任何提示/帮助!

【问题讨论】:

    标签: python opencv


    【解决方案1】:

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

    如果您的img 不是完全正确的尺寸(在这种情况下为 1920、1080),OpenCV 会默默地拒绝将数据写入 VideoWriter。在写入输出之前尝试类似img = cv2.resize(img, (1920, 1080))

    您的 FOURCC 引用的编解码器可能不存在 - 如果您检查 out.isOpened(),您应该能够发现是否是问题所在。

    【讨论】:

      猜你喜欢
      • 2017-04-04
      • 1970-01-01
      • 2022-01-10
      • 2012-05-25
      • 2022-01-15
      • 2021-01-04
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多