Barcode-Scannen ist zu einem unverzichtbaren Werkzeug in verschiedenen Branchen geworden, vom Einzelhandel über die Logistik bis hin zum Gesundheitswesen. Auf Desktop-Plattformen ermöglicht es die schnelle Erfassung und Verarbeitung von Informationen ohne manuelle Dateneingabe, was Zeit spart und Fehler reduziert. In diesem Tutorial werden wir die Funktionen des Dynamsoft Capture Vision SDK weiter erkunden, indem wir einen Python-Barcodescanner für Windows, Linux erstellen , und macOS.
Dynamsoft Capture Vision-Testlizenz: Erhalten Sie einen 30-Tage-Testlizenzschlüssel für das Dynamsoft Capture Vision SDK.
Python-Pakete: Installieren Sie die erforderlichen Python-Pakete mit den folgenden Befehlen:
pip install dynamsoft-capture-vision-bundle opencv-python
Wozu dienen diese Pakete?
Da es sich beim Dynamsoft Capture Vision SDK um ein einheitliches Framework handelt, das in verschiedene Bildverarbeitungsaufgaben integriert ist, können wir problemlos zwischen den Bildverarbeitungsmodi wechseln, indem wir den Namen PresetTemplate an die Methode „capture()“ übergeben.
Der folgende Codeausschnitt zeigt die integrierte PresetTemplate-Enumeration im Dynamsoft Capture Vision SDK:
class EnumPresetTemplate(Enum): PT_DEFAULT = _DynamsoftCaptureVisionRouter.getPT_DEFAULT() PT_READ_BARCODES = _DynamsoftCaptureVisionRouter.getPT_READ_BARCODES() PT_RECOGNIZE_TEXT_LINES = _DynamsoftCaptureVisionRouter.getPT_RECOGNIZE_TEXT_LINES() PT_DETECT_DOCUMENT_BOUNDARIES = ( _DynamsoftCaptureVisionRouter.getPT_DETECT_DOCUMENT_BOUNDARIES() ) PT_DETECT_AND_NORMALIZE_DOCUMENT = ( _DynamsoftCaptureVisionRouter.getPT_DETECT_AND_NORMALIZE_DOCUMENT() ) PT_NORMALIZE_DOCUMENT = _DynamsoftCaptureVisionRouter.getPT_NORMALIZE_DOCUMENT() PT_READ_BARCODES_SPEED_FIRST = ( _DynamsoftCaptureVisionRouter.getPT_READ_BARCODES_SPEED_FIRST() ) PT_READ_BARCODES_READ_RATE_FIRST = ( _DynamsoftCaptureVisionRouter.getPT_READ_BARCODES_READ_RATE_FIRST() ) PT_READ_SINGLE_BARCODE = _DynamsoftCaptureVisionRouter.getPT_READ_SINGLE_BARCODE() PT_RECOGNIZE_NUMBERS = _DynamsoftCaptureVisionRouter.getPT_RECOGNIZE_NUMBERS() PT_RECOGNIZE_LETTERS = _DynamsoftCaptureVisionRouter.getPT_RECOGNIZE_LETTERS() PT_RECOGNIZE_NUMBERS_AND_LETTERS = ( _DynamsoftCaptureVisionRouter.getPT_RECOGNIZE_NUMBERS_AND_LETTERS() ) PT_RECOGNIZE_NUMBERS_AND_UPPERCASE_LETTERS = ( _DynamsoftCaptureVisionRouter.getPT_RECOGNIZE_NUMBERS_AND_UPPERCASE_LETTERS() ) PT_RECOGNIZE_UPPERCASE_LETTERS = ( _DynamsoftCaptureVisionRouter.getPT_RECOGNIZE_UPPERCASE_LETTERS() )
Die PT_DEFAULT-Vorlage unterstützt mehrere Aufgaben, einschließlich Dokumentenerkennung, MRZ-Erkennung und Barcode-Erkennung. Um die Leistung speziell für die Barcode-Erkennung zu optimieren, legen Sie die Vorlage auf EnumPresetTemplate.PT_READ_BARCODES.value.
festUnter Bezugnahme auf die vorherigen Beispiele zur Dokumentenerkennung und MRZ-Erkennung kann der folgende Code zum Lesen von Barcodes aus statischen Bildern verwendet werden:
import sys from dynamsoft_capture_vision_bundle import * import os import cv2 import numpy as np from utils import * if __name__ == '__main__': print("**********************************************************") print("Welcome to Dynamsoft Capture Vision - Barcode Sample") print("**********************************************************") error_code, error_message = LicenseManager.init_license( "LICENSE-KEY") if error_code != EnumErrorCode.EC_OK and error_code != EnumErrorCode.EC_LICENSE_CACHE_USED: print("License initialization failed: ErrorCode:", error_code, ", ErrorString:", error_message) else: cvr_instance = CaptureVisionRouter() while (True): image_path = input( ">> Input your image full path:\n" ">> 'Enter' for sample image or 'Q'/'q' to quit\n" ).strip('\'"') if image_path.lower() == "q": sys.exit(0) if image_path == "": image_path = "../../../images/multi.png" if not os.path.exists(image_path): print("The image path does not exist.") continue result = cvr_instance.capture( image_path, EnumPresetTemplate.PT_READ_BARCODES.value) if result.get_error_code() != EnumErrorCode.EC_OK: print("Error:", result.get_error_code(), result.get_error_string()) else: cv_image = cv2.imread(image_path) items = result.get_items() print('Found {} barcodes.'.format(len(items))) for item in items: format_type = item.get_format() text = item.get_text() print("Barcode Format:", format_type) print("Barcode Text:", text) location = item.get_location() x1 = location.points[0].x y1 = location.points[0].y x2 = location.points[1].x y2 = location.points[1].y x3 = location.points[2].x y3 = location.points[2].y x4 = location.points[3].x y4 = location.points[3].y del location cv2.drawContours( cv_image, [np.intp([(x1, y1), (x2, y2), (x3, y3), (x4, y4)])], 0, (0, 255, 0), 2) cv2.putText(cv_image, text, (x1, y1 - 10), cv2.FONT_HERSHEY_SIMPLEX, 0.5, (0, 0, 255), 2) cv2.imshow( "Original Image with Detected Barcodes", cv_image) cv2.waitKey(0) cv2.destroyAllWindows() input("Press Enter to quit...")
Hinweis: Ersetzen Sie den LIZENZSCHLÜSSEL durch Ihren gültigen Lizenzschlüssel.
Das Dekodieren mehrerer Barcodes aus einem einzigen Bild ist ein häufiger Anwendungsfall im Einzelhandel und in der Logistik. Das folgende Bild enthält mehrere Barcodes unterschiedlicher Formate:
Beim Lesen von Barcodes aus einer Bilddatei rufen wir die Methode „capture()“ im Hauptthread auf. Für die Verarbeitung von Echtzeit-Videostreams von einer Webcam ist jedoch ein anderer Ansatz erforderlich, um eine Blockierung des Hauptthreads zu vermeiden. Das Dynamsoft Capture Vision SDK bietet einen integrierten Mechanismus für die Verarbeitung von Echtzeit-Videobildern und deren asynchrone Verarbeitung in einem nativen C-Worker-Thread. Um dies zu implementieren, erweitern Sie die Klassen ImageSourceAdapter und CapturedResultReceiver, um die Bilddaten bzw. erfassten Ergebnisse zu verarbeiten, und rufen Sie dann die Methode start_capturing() auf, um mit der Verarbeitung des Videostreams zu beginnen.
pip install dynamsoft-capture-vision-bundle opencv-python
Erklärung
https://github.com/yushulx/python-barcode-qrcode-sdk/tree/main/examples/official/10.x
Das obige ist der detaillierte Inhalt vonSo erstellen Sie einen Python-Barcode-Scanner für Windows, Linux und macOS. Für weitere Informationen folgen Sie bitte anderen verwandten Artikeln auf der PHP chinesischen Website!
if($res){
return json_encode(array('code'=>1,'msg'=>'成功'));
}else{
return json_encode(array('code'=>0,'msg'=>'失败'));
}
}
public function
}