Kivy- python: дублирование изображения на текстуре - PullRequest
1 голос
/ 29 января 2020

Я занимаюсь разработкой приложения в python 3.6 с использованием kivy.
Я хочу отобразить изображение, сохраненное в виде массива numpy.
Я написал этот код:

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(r'./kulki.jpg', cv2.IMREAD_GRAYSCALE)
        w, h = img.shape
        texture = Texture.create(size=(h, w))
        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()

и это мой вывод:

enter image description here

для этого изображения:

enter image description here

Кто-нибудь знает, почему есть несколько одинаковых картинок вместо одной? А почему мне нужно менять размеры местами (ш, ч) -> (ч, ш)?

С уважением!

1 Ответ

1 голос
/ 29 января 2020

Я думаю, что проблема в том, что вы конвертируете изображение в оттенки серого, когда читаете его, тогда вы используете rgb для цветного формата Texture. Если вы согласитесь, то ваш код будет работать. Например, измените:

texture.blit_buffer(img.flatten(), colorfmt='rgb', bufferfmt='ubyte')

на:

texture.blit_buffer(img.flatten(), colorfmt='luminance', bufferfmt='ubyte')
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...