【问题标题】:Converting OpenCV2 image into Kivy Texture将 OpenCV2 图像转换为 Kivy 纹理
【发布时间】:2017-01-09 15:22:09
【问题描述】:

我目前正在尝试从视频中获取帧(使用 openCV2),然后使用 Kivy 在应用中显示它们。

由于不同的图像格式,我不得不求助于将图像从 openCV2 保存到磁盘,然后在 Kivy 中读取,这是一个不优雅的解决方案,偶尔会导致崩溃(Kivy 部分试图访问图像在它完全保存完成之前)

我正在尝试直接传递图像,不涉及磁盘访问。目前,我正在尝试使用 cv2.imencode 将图像从 openCV2 保存到缓冲区中,然后使用 Texture.blit_buffer 将缓冲区转换为 kivy 纹理

目前,图像提取如下:

video = cv2.VideoCapture(videourl)
success, image = video.read()
success2, buffer = cv2.imencode('.jpg', image)

虽然纹理创建看起来像:

tex = Texture.create()
tex.blit_buffer(buffer, colorfmt='rgb', bufferfmt='ubyte')

但是,我收到以下错误:

ValueError: Buffer has wrong number of dimensions (expected 1, got 2)

据此,我猜它期望数组是一维的。我是否只需要将 openCV2 图像(存储为 numpy n 维数组)转换为一维数组?如果是这样,我还需要做什么来确保图像正确复制?

提前致谢,

【问题讨论】:

    标签: python opencv kivy


    【解决方案1】:

    将缓冲区压平

    buffer.flatten()
    

    它应该可以工作。

    【讨论】:

      猜你喜欢
      • 2020-03-04
      • 1970-01-01
      • 2015-12-31
      • 1970-01-01
      • 1970-01-01
      • 2020-09-08
      • 2013-06-16
      • 1970-01-01
      • 2013-04-15
      相关资源
      最近更新 更多