Pengimbasan Kod Bar telah menjadi alat penting merentas pelbagai industri, daripada runcit dan logistik kepada penjagaan kesihatan. Pada platform desktop, ia membolehkan penangkapan dan pemprosesan maklumat dengan pantas tanpa kemasukan data manual, menjimatkan masa dan mengurangkan ralat. Dalam tutorial ini, kami akan terus menerokai keupayaan Dynamsoft Capture Vision SDK dengan membina pengimbas kod bar Python untuk Windows, Linux , dan macOS.
Lesen Percubaan Dynamsoft Capture Vision: Dapatkan kunci lesen percubaan 30 Hari untuk Dynamsoft Capture Vision SDK.
Python Packages: Pasang pakej Python yang diperlukan menggunakan arahan berikut:
pip install dynamsoft-capture-vision-bundle opencv-python
Untuk apa pakej ini?
Memandangkan Dynamsoft Capture Vision SDK ialah rangka kerja bersatu yang disepadukan dengan pelbagai tugas pemprosesan imej, kami boleh menukar antara mod pemprosesan imej dengan mudah dengan menghantar nama PresetTemplate kepada kaedah capture().
Coretan kod berikut menunjukkan penghitungan PresetTemplate terbina dalam dalam 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() )
Templat PT_DEFAULT menyokong berbilang tugas, termasuk pengesanan dokumen, pengecaman MRZ dan pengesanan kod bar. Untuk mengoptimumkan prestasi khusus untuk pengesanan kod bar, tetapkan templat kepada EnumPresetTemplate.PT_READ_BARCODES.value.
Merujuk pengesanan dokumen sebelumnya dan contoh pengecaman MRZ, kod berikut boleh digunakan untuk membaca kod bar daripada imej statik:
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...")
Nota: Gantikan LESEN-KUNCI dengan kunci lesen anda yang sah.
Menyahkod berbilang kod bar daripada satu imej ialah kes penggunaan biasa dalam runcit dan logistik. Imej berikut mengandungi berbilang kod bar dalam format berbeza:
Apabila membaca kod bar daripada fail imej, kami menggunakan kaedah tangkap() dalam urutan utama. Walau bagaimanapun, untuk memproses strim video masa nyata daripada kamera web, pendekatan berbeza diperlukan untuk mengelak daripada menyekat utas utama. Dynamsoft Capture Vision SDK menyediakan mekanisme terbina dalam untuk mengendalikan bingkai video masa nyata dan memprosesnya secara tidak segerak pada benang pekerja C asli. Untuk melaksanakan ini, lanjutkan kelas ImageSourceAdapter dan CapturedResultReceiver untuk mengendalikan data imej dan hasil tangkapan, masing-masing, kemudian panggil kaedah start_capturing() untuk mula memproses strim video.
pip install dynamsoft-capture-vision-bundle opencv-python
Penjelasan
https://github.com/yushulx/python-barcode-qrcode-sdk/tree/main/examples/official/10.x
Atas ialah kandungan terperinci Cara Membina Pengimbas Kod Bar Python untuk Windows, Linux dan macOS. Untuk maklumat lanjut, sila ikut artikel berkaitan lain di laman web China PHP!