Я работаю над проектом, создаю мобильное приложение с python и kivymd, у меня есть файл (scanner_barcode.py), функция этого файла - открыть мою веб-камеру и отсканировать штрих-код продукта. с другой стороны, у меня есть мобильное приложение с kivymd, я хочу связать этот scanner_barcode.py с мобильным приложением, любая помощь ??
это: scanner_barcode.py
import argparse
import imutils
import time
import cv2
from threading import Thread
import cv2
class WebcamVideoStream:
def __init__(self, src=0, name="WebcamVideoStream"):
self.stream = cv2.VideoCapture(src)
(self.grabbed, self.frame) = self.stream.read()
self.name = name
self.stopped = False
def start(self):
t = Thread(target=self.update, name=self.name, args=())
t.daemon = True
t.start()
return self
def update(self):
while True:
if self.stopped:
return
(self.grabbed, self.frame) = self.stream.read()
def read(self):
return self.frame
class VideoStream:
def __init__(self, src=0, usePiCamera=False, resolution=(320, 240),
framerate=32, **kwargs):
if usePiCamera:
from .pivideostream import PiVideoStream
self.stream = PiVideoStream(resolution=resolution,
framerate=framerate, **kwargs)
else:
self.stream = WebcamVideoStream(src=src)
def start(self):
return self.stream.start()
class scaner:
def __init__(self, **kwargs):
super().__init__(**kwargs)
def scanner(self):
frequency = 2500
duration = 60
ap = argparse.ArgumentParser()
ap.add_argument(
"-o",
"--output",
type=str,
default="barcodesData.csv",
help="path to output CSV file "
)
frequency = 2500 # Set Frequency To 2500 Hertz
duration = 60 # Set Duration To 1000 ms == 1 second
ap = argparse.ArgumentParser()
ap.add_argument(
"-o",
"--output",
type=str,
default="barcodesData.csv",
help="path to output CSV file "
)
args = vars(ap.parse_args())
print("Starting webcam")
vs = VideoStream(src=0).start()
time.sleep(2.0)
csvWrite = open(args["output"], "w")
found = set()
while True:
frameData = vs.read()
frameData = imutils.resize(frameData, width=600)
barcodes = pyzbar.decode(frameData)
for barcode in barcodes:
(x, y, width, height) = barcode.rect
cv2.rectangle(frameData, (x, y), (x + width, y + height), (0, 0, 255), 2)
barcodeData = barcode.data.decode("utf-8")
barcodeType = barcode.type
textData = "{} ({})".format(barcodeData, barcodeType)
cv2.putText(
frameData,
textData,
(x, y - 10),
cv2.FONT_HERSHEY_SIMPLEX,
0.5,
(0, 0, 255),
2
)
print("barCode is %s" %textData)
cv2.imshow("Barcode Scanner", frameData)
key = cv2.waitKey(1) & 0xFF
if key == ord("e"):
break
и файл main.py моего приложения
from kivy.lang import Builder
from baseclass.login import Login
from mysql.connector import Error
from baseclass.start import Start
from kivy.lang import Builder
from kivy.uix.screenmanager import Screen
from kivy.utils import get_color_from_hex
from spin_load import ProgressSpinner
from kivymd.color_definitions import colors
from kivy.uix.recycleview import RecycleView
from kivy.core.window import Window
from kivy.uix.recycleview import RecycleView
import mysql.connector
import re
from kivymd.uix.menu import MDDropdownMenu
from kivy.properties import OptionProperty
from kivy.properties import ObjectProperty
from kivymd.uix.bottomsheet import MDListBottomSheet
Window.size = (360, 600)
class Codebarre(Screen):
def back_to_scanner(self):
self.manager.current = 'scanner'
class Compte(Screen):
def back_to_scanner(self):
self.manager.current = 'scanner'
class Scanner(Screen):
def go_to_search(self):
self.manager.current = 'search'
class Search(Screen):
def go_to_scanner(self):
self.manager.current = 'scanner'
class Connecter(Screen):
pass
class Inscrire(Screen):
pass
class Codebarre(Screen):
pass
class Apropos(Screen):
pass
class Search(Screen):
pass
class Setting(Screen):
def back_to_scanner(self):
self.manager.current = 'scanner'
class MyApp(MDApp):
def build(self):
self.theme_cls.primary_palette = "DeepPurple"
return Builder.load_file("pfe.kv")
MyApp().run()```