Cara Membina Pengimbas Kod Bar Python untuk Windows, Linux dan macOS

DDD
Lepaskan: 2024-10-22 13:24:03
asal
760 orang telah melayarinya

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.

Demo Pengimbas Kod Bar Python pada macOS

Prasyarat

  • 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
    
    Salin selepas log masuk
    Salin selepas log masuk

    Untuk apa pakej ini?

    • dynamsoft-capture-vision-bundle ialah Dynamsoft Capture Vision SDK untuk Python.
    • opencv-python menangkap bingkai kamera dan memaparkan hasil imej yang diproses.

Membaca Kod Bar daripada Imej Statik

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().

Templat Terbina dalam Dynamsoft Capture Vision SDK

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()
    )
Salin selepas log masuk

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.

Kod Python untuk Pengesanan Kod Bar

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...")

Salin selepas log masuk

Nota: Gantikan LESEN-KUNCI dengan kunci lesen anda yang sah.

Menguji Pembaca Kod Bar Python dengan Imej Berbilang Kod Bar

Menyahkod berbilang kod bar daripada satu imej ialah kes penggunaan biasa dalam runcit dan logistik. Imej berikut mengandungi berbilang kod bar dalam format berbeza:

How to Build a Python Barcode Scanner for Windows, Linux, and macOS

Pengesanan Berbilang Kod Bar masa nyata dengan Webcam

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
Salin selepas log masuk
Salin selepas log masuk

Penjelasan

  • Kelas FrameFetcher melaksanakan antara muka ImageSourceAdapter untuk memasukkan data bingkai ke dalam penimbal terbina dalam.
  • Kelas MyCapturedResultReceiver melaksanakan antara muka CapturedResultReceiver. Kaedah on_captured_result_received berjalan pada utas pekerja C asli dan menghantar objek CapturedResult ke utas utama di mana ia disimpan dalam baris gilir selamat untuk kegunaan selanjutnya.
  • A CapturedResult mengandungi beberapa objek CapturedResultItem. Jenis CRIT_BARCODE mewakili data kod bar yang diiktiraf.

Menguji Pengimbas Kod Bar Python pada macOS

How to Build a Python Barcode Scanner for Windows, Linux, and macOS

Kod Sumber

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!

sumber:dev.to
Kenyataan Laman Web ini
Kandungan artikel ini disumbangkan secara sukarela oleh netizen, dan hak cipta adalah milik pengarang asal. Laman web ini tidak memikul tanggungjawab undang-undang yang sepadan. Jika anda menemui sebarang kandungan yang disyaki plagiarisme atau pelanggaran, sila hubungi admin@php.cn
Tutorial Popular
Lagi>
Muat turun terkini
Lagi>
kesan web
Kod sumber laman web
Bahan laman web
Templat hujung hadapan
Tentang kita Penafian Sitemap
Laman web PHP Cina:Latihan PHP dalam talian kebajikan awam,Bantu pelajar PHP berkembang dengan cepat!