Преобразование python в язык киви - PullRequest
0 голосов
/ 09 мая 2020

Я новичок в python и более в kivy, при этом оказывается, что они помогли мне создать этот код (ниже), оказывается, что после того, как мой код, кажется, работает хорошо, многие говорили мне, что навсегда практики, которые я не писал, я создам графические среды c с python, которые существовали для этого .kv, с этим более понятным оказывается, что я не смог добиться того, как я это делаю, я надеюсь, вы могли бы помочь мне расшифровать Я благодарю вас от всей души спасибо, под кодом, я просто хочу расшифровать то, что у меня есть, спасибо.

# -*- coding: utf-8 -*-
from kivy.app import App
from kivy.uix.boxlayout import BoxLayout
from kivy.uix.image import Image
from kivy.graphics.texture import Texture
from kivy.clock import Clock
import cv2

class CvCamera(App):
    def build(self):  # Construcción de interfaz de usuario, etc
        self._cap = cv2.VideoCapture(0)

        layout2 = BoxLayout(orientation='horizontal', size_hint=(1.0, 0.1))
        self.img1 = Image(size_hint=(1.0, 0.7))
        layout = BoxLayout(orientation='vertical')
        layout.add_widget(self.img1)
        layout.add_widget(layout2)

        while not self._cap.isOpened():
            pass

        Clock.schedule_interval(self.update, 1.0 / 30.0)
        return layout

    def update(self, dt):
        ret, img = self._cap.read()
        img = cv2.flip(img, 0)
        texture1 = Texture.create(size=(img.shape[1], img.shape[0]), colorfmt='bgr')
        texture1.blit_buffer(img.tostring(), colorfmt='bgr', bufferfmt='ubyte')
        self.img1.texture = texture1

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

1 Ответ

2 голосов
/ 09 мая 2020

Вот эквивалент, использующий kv язык:

# -*- coding: utf-8 -*-
from kivy.app import App
from kivy.lang import Builder
from kivy.graphics.texture import Texture
from kivy.clock import Clock
import cv2

kv = '''
BoxLayout:
    orientation: 'vertical'
    Image:
        id: img1
        size_hint: 1.0, 0.7
    BoxLayout:
        orientation: 'horizontal'
        size_hint: 1.0, 0.1
'''

class CvCamera(App):
    def build(self):  # Construcción de interfaz de usuario, etc
        self._cap = cv2.VideoCapture(0)

        layout = Builder.load_string(kv)

        while not self._cap.isOpened():
            pass

        Clock.schedule_interval(self.update, 1.0 / 30.0)
        return layout

    def update(self, dt):
        ret, img = self._cap.read()
        img = cv2.flip(img, 0)
        texture1 = Texture.create(size=(img.shape[1], img.shape[0]), colorfmt='bgr')
        texture1.blit_buffer(img.tostring(), colorfmt='bgr', bufferfmt='ubyte')
        self.root.ids.img1.texture = texture1

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

Обратите внимание, что, как правило, аргументы в () из Widgets становятся записями ниже и имеют отступ от Widget имени .

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...