#python #opencv #kivy #barcode-scanner #kivymd
#python #opencv #kivy #сканер штрих-кода #kivymd
Вопрос:
Я написал небольшое приложение для Windows, которое использует модуль pyzbar (штрих-коды), приложение просто считывает штрих-коды и сохраняет их. На компьютере все работает нормально, но после компиляции при сборке, после запуска сборка не запускается. Я проследил логику, и ошибка связана с модулем, предположительно его там нет, он не загружается, хотя во время компиляции ошибок нет Что делать или куда вставить этот модуль, я указал модуль pyzbar в файле спецификации. Странно, что это не запускается. Несмотря на то, что при компиляции ошибок нет!
Версии программного обеспечения
- Python: 3.9.2
- ОС: Windows 10 Home 64-разрядная
- Kivy: 2.0.0
Метод установки Kivy:
- pip install kivy
- pip install pyzbar
- pip install opencv-python
Я получил ошибку типа
File "pyzbarzbar_library.py", line 51, in <listcomp>
File "ctypes__init__.py", line 452, in LoadLibrary
File "PyInstallerloaderpyimod04_ctypes.py", line 56, in _init_
pyimod04_ctypes.PyInstallerImportError: Failed to load dynlib/dll
'C:\Users\hp\AppData\Local\Temp\_MEI78802\pyzbar\libiconv.dll'.
Most probably this dynlib/dll was not found when the application was
frozen.
[19732] Failed to execute script 'main' due to unhandled exception!
main.py
import sys
import os
import cv2
from pyzbar.pyzbar import decode
from kivy.app import App
from kivy.lang import Builder
from kivy.uix.gridlayout import GridLayout
Builder.load_file("Test.kv")
# Make one method to decode the barcode
class BarcodeScreen(GridLayout):
def BarcodeReader(self):
# read the image in numpy array using cv2
img = cv2.imread('image.jpg')
# Decode the barcode image
detectedBarcodes = decode(img)
# If not detected then print the message
if not detectedBarcodes:
print("Barcode Not Detected or your barcode is blank/corrupted!")
else:
# Traverse through all the detected barcodes in image
for barcode in detectedBarcodes:
# Locate the barcode position in image
(x, y, w, h) = barcode.rect
# Put the rectangle in image using
# cv2 to heighlight the barcode
cv2.rectangle(img, (x - 10, y - 10), (x w 10, y h 10), (255, 0, 0), 2)
if barcode.data != "":
# Print the barcode data
print(barcode.data)
print(barcode.type)
self.ids.my_label.text = "Barcode Data: " str(barcode.data)
self.ids.my_label2.text = "Barcode Type: " str(barcode.type)
class Test(App):
def build(self):
return BarcodeScreen()
if __name__ == "__main__":
Test().run()
Test.kv
<BarcodeScreen>
id: settings
name: 'settings'
BoxLayout:
orientation: 'vertical'
size: root.width, root.height
Button:
text: 'Capture code'
size_hint_y: None
height: '80dp'
on_press:
root.BarcodeReader()
Label:
id: my_label
size: root.width, root.height
font_size: 20
Label:
id: my_label2
size: (0.5, 0.5)
font_size: 20
** Ссылка на исходный код **
https://github.com/dreamorg89/Barcode-Image-Decode-Python-Kivy.git
Комментарии:
1. Разве это не связано с этой проблемой? Не удалось загрузить dynlib / dll libiconv.dll №27