Считать штрихкод с помощью python без нажатия кнопки - PullRequest
0 голосов
/ 24 февраля 2020

Я пытаюсь создать мобильное приложение, которое сканирует штрих-код продукта, я ищу на net и нашел код, но код включает в себя 2 кнопки (запустить камеру и прочитать штрих-код), но я только Я хочу прочитать штрих-код без нажатия какой-либо кнопки, поэтому я должен удалить эти кнопки, и когда код запускается, я должен видеть только камеру, и когда я показываю ей штрих-код, она должна прочитать штрих-код без нажатия кнопки, это код:

from kivy.lang import Builder
from kivy.uix.boxlayout import BoxLayout
import time
from kivy.factory import Factory
from kivymd.app import MDApp

from pyzbar import pyzbar
import cv2

Builder.load_string('''
<BottomAppBar@Screen>:
    name: "bottom app bar" 
    BoxLayout:
        spacing: dp(10)
        orientation: "vertical"   
<CameraClick>:
    orientation: 'vertical'
    Camera:
        id: camera
        resolution: (640, 480)
        play: False
    ToggleButton:
        text: 'Start Camera'
        on_press: camera.play = not camera.play
        size_hint_y: None
        height: '48dp'
    Button:
        text: 'Read Barcode'
        size_hint_y: None
        height: '48dp'
        on_press : root.capture()



''')


class CameraClick(BoxLayout):
    def capture(self):

        camera = self.ids['camera']
        timestr = time.strftime("%Y%m%d_%H%M%S")
        camera.export_to_png("IMG_{}.png".format(timestr))

        #decode barcode from captured image and add result on top of it

        image = cv2.imread("IMG_{}.png".format(timestr))
        barcodes = pyzbar.decode(image)
        for barcode in barcodes:
            (x ,y ,w ,h) = barcode.rect
            cv2.rectangle(image, (x, y), (x+w, y+y), (0, 0, 255), 2)

            #decoded barcode
            barcodeData = barcode.data.decode("utf-8")
            barcodeType = barcode.type
            text = "{}({})".format(barcodeData, barcodeType)

            cv2.putText(image, text, (x, y-10), cv2.FONT_HERSHEY_COMPLEX, 0.5, (0, 0, 255), 2)
            print("barCode is %s"%text)
            cv2.imshow("image", image)
            cv2.waitKey(0)

class TestCamera(App):

    def build(self):
        return CameraClick()


TestCamera().run()```

...