python - Размер дисплея Kivy изменен Стрим от picamera - PullRequest
0 голосов
/ 18 июня 2020
• 1000 Оптимально я хотел бы найти решение, которое не требует cv2, поскольку оно довольно медленное.

Я попытался создать собственный виджет, который обновляется со скоростью 30 кадров в секунду и извлекает изображение, обрабатывает его и затем отображает. Как никогда не работает!

ВНИМАНИЕ: при запуске этого кода мой пи застревает и его нужно перезагрузить!

class DisplayImage(Image):
    def __init__(self, **kwargs):
        super(DisplayImage, self).__init__(**kwargs)

        self.cam = PiCamera()
        self.cam.resolution = (1280, 720)
        self.cam.framerate = 30
        self.cam.awb_mode = "auto"
        self.raw = PiRGBArray(self.cam, size=(1280, 720))

        Clock.schedule_interval(self.update, 1.0 / 30)

    def update(self, dt):
        self.cam.capture(self.raw, format='bgr', resize=(1400, 900))
        frame = self.raw.array

        buf = cv2.resize(frame, (1400, 900), interpolation=cv2.INTER_LINEAR).tostring()

        image_texture = Texture.create(size=(frame.shape[1], frame.shape[0]), colorfmt='rgb')
        image_texture.blit_buffer(buf, colorfmt='bgr', bufferfmt='ubyte')

        self.texture = image_texture

Любая помощь будет принята с благодарностью!

С уважением, Бенни!

...