有什么办法可以将numpy数组指定为“图像小部件”?

时间:2019-04-05 00:45:08

标签: python numpy opencv kivy

我正在寻找一种方法来为WS_STYLECHANGED小部件的source指定 numpy图像阵列,而又不另存为“ .png”或“ .jpg”之类的文件。 我知道一种使用canvas(ImageTexture.create()blit_buffer())的方法.....还有其他方法吗?

Rectangle()

1 个答案:

答案 0 :(得分:1)

您必须使图像通过Texture

import kivy
from kivy.app import App
from kivy.uix.image import Image
from kivy.uix.widget import Widget
from kivy.graphics.texture import Texture
import cv2

class Test(Widget):
    def __init__(self, **kwargs):
        super(Test, self).__init__(**kwargs)

        img = cv2.imread('0.png', cv2.IMREAD_UNCHANGED)
        img = cv2.cvtColor(img, cv2.COLOR_BGR2RGB)
        img = cv2.flip(img, 0)
        w, h, _ = img.shape
        texture = Texture.create(size=(w, h))
        texture.blit_buffer(img.flatten(), colorfmt='rgb', bufferfmt='ubyte')

        w_img = Image(size=(w, h), texture=texture)
        self.add_widget(w_img)

class DemoApp(App):
    def build(self):
        return Test()

if __name__ == '__main__':
    DemoApp().run()