Python 有没有办法将numpy数组指定为';图像小部件';?

Python 有没有办法将numpy数组指定为';图像小部件';?,python,numpy,opencv,kivy,Python,Numpy,Opencv,Kivy,我正在寻找一种方法来指定numpy图像数组到图像小部件的源,而不保存为文件,如.png或.jpg。 我知道一种使用画布的方法(Texture.create(),blit\u buffer(),Rectangle())……还有其他方法吗 import kivy from kivy.app import App from kivy.uix.image import Image from kivy.uix.widget import Widget import cv2 class Test(Widg

我正在寻找一种方法来指定numpy图像数组
图像
小部件的
,而不保存为文件,如.png或.jpg。 我知道一种使用画布的方法(
Texture.create()
blit\u buffer()
Rectangle()
)……还有其他方法吗

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

class Test(Widget):

    img = cv2.imread('0.png', cv2.IMREAD_UNCHANGED)
    img = cv2.cvtColor(img, cv2.COLOR_BGR2RGB)
    img = cv2.flip(img, 0)

    # Is it possible to specify cv2(numpy) image to 'Image Widget' directly(without saving as file(jpg,png))?
    w_img = Image(source=img, size=(100, 100)) # >> error
    self.add_widget(w_img)

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

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

您必须通过以下方式传递图像:


谢谢我不知道
Image
小部件可以接受
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()