Apple M1MacでPipを介してPythonバーコードSDKをインストールする方法

Dynamsoft Barcode Reader SDKは、数行のコードでバーコード読み取り機能をWebまたはデスクトップアプリケーションに組み込むことができる多機能バーコード読み取りコントロールです。これにより、数か月の開発時間とコストを節約できます。カメラやスキャナーから取得したさまざまな画像ファイル形式とDIB形式をサポートできます。Dynamsoft Barcode Reader SDKを使用すると、ビジネスニーズを満たす強力で実用的なバーコードスキャナーソフトウェアを作成できます。

Dynamsoftバーコードリーダーの最新バージョンをダウンロードするにはクリックしてください

IntelベースのPythonアプリケーションがAppleM1Macでうまく動作するかどうかについて興味がある人もいるかもしれません。最近、ネイティブのx86_64ライブラリとCPythonを使用するDynamsoft Python BarcodeSDKでテストしました。pipを使用してwheelパッケージをインストールし、Pythonバーコードリーダーアプリケーションを実行しても問題がないことがわかりました。

PipおよびPythonバーコードターンテーブルソフトウェアパッケージをインストールします

ターミナルアプリケーションを開いてPython3を初めて入力すると、コマンドライン開発者ツールをインストールするためのプロンプトダイアログボックスが表示されます。

ここに画像の説明を挿入

[インストール]をクリックし、しばらく待って関連ツールをインストールします。その後、ターミナルでpython3を正常に実行できます。

次のステップはpipをインストールすることです:

curl https://bootstrap.pypa.io/get-pip.py -o get-pip.py
python3 get-pip.py 

アイデアを準備したら、Dynamsoft Python BarcodeSDKのインストールを試みることができます。

python3 -m pip install dbr

失敗のメッセージが表示されても驚かないでください。
ここに画像の説明を挿入

ARM64アーキテクチャにx86_64ホイールパッケージをインストールしようとしています。ただし、Rosetta 2で機能させることができるので、イライラしないでください。Python3アーキテクチャを見てみましょう。

% file $(which python3)
/usr/bin/python3: Mach-O universal binary with 2 architectures: [x86_64:Mach-O 64-bit executable x86_64] [arm64e:Mach-O 64-bit executable arm64e]
/usr/bin/python3 (for architecture x86_64): Mach-O 64-bit executable x86_64
/usr/bin/python3 (for architecture arm64e): Mach-O 64-bit executable arm64e

ご覧のとおり、Python 3は汎用アプリケーションであり、x86_64をサポートしています。したがって、archを指定することでx86_64ホイールパッケージをインストールできます。

arch -x86_64 $(which python3) -m pip install dbr

おめでとう!DynamsoftPythonバーコードSDKをインストールしました。これから、Webカメラを使用してバーコードスキャンアプリケーションを作成できるようになります。

Apple M1MacでWebカメラベースのPythonバーコードリーダーを構築する

OpenCV-Pythonをインストールして、Webカメラのビデオストリームをキャプチャします。

arch -x86_64 $(which python3) -m pip opencv-python

カメラの電源を入れ、ビデオストリームをリアルタイムで表示します。

import cv2 as cv
cap = cv.VideoCapture(0)
while True:
    _ret, frame = cap.read()

    if not _ret:
        break
        
    cv.imshow('BarcodeReader', frame)

    ch = cv.waitKey(1)
    # ESC
    if ch == 27:
        break

バーコードのスキャンはCPUを集中的に使用するタスクであるため、PythonスレッドではなくPythonプロセスで実行する必要があります。

from dbr import *
from multiprocessing import Process, Queue

def process_barcode_frame(license, frameQueue, resultQueue):
    # Create Dynamsoft Barcode Reader
    reader = BarcodeReader()
    # Apply for a trial license: https://www.dynamsoft.com/customer/license/trialLicense
    reader.init_license(license)
    settings = reader.get_runtime_settings()
    settings.max_algorithm_thread_count = 1
    reader.update_runtime_settings(settings)

    while True:
        results = None

        try:
            frame = frameQueue.get(False, 10)
            if type(frame) is str:
                break
        except:
            continue

        try:
            frameHeight, frameWidth, channel = frame.shape[:3]
            results = reader.decode_buffer_manually(np.array(frame).tobytes(), frameWidth, frameHeight, frame.strides[0], EnumImagePixelFormat.IPF_RGB_888)
        except BarcodeReaderError as error:
            print(error)

        try:
            resultQueue.put(results, False, 10)
        except:
            pass

barcodeScanning = Process(target=process_barcode_frame, args=(license, frameQueue, resultQueue))
barcodeScanning.start()

注:有効なSDKライセンスも必要です。
メインプロセスでは、画像フレームを継続的に送信し、バーコードスキャン結果を受信するために2つのキューが作成されます。

frameQueue = Queue(size)
resultQueue = Queue(size)

while True:
    _ret, frame = cap.read()

    if not _ret:
        break

    try:
        results = resultQueue.get(False, 10)
    except:
        pass
        
    cv.imshow('BarcodeReader', frame)

    # Append a frame to the frame queue
    try:
        frameQueue.put(frame.copy(), False, 10)
    except:
        pass

    ch = cv.waitKey(1)
    # ESC
    if ch == 27:
        break

これで、Pythonバーコードプログラムをテストできます。

arch -x86_64 $(which python3) barcode_scanning.py license.txt

もう1つ、カメラの許可制限により、アプリケーションを実行できない場合があります。ターミナルアプリケーションに加えて、iTerm2をインストールしてカメラアクセスを要求することもできます。
ここに画像の説明を挿入

最後に、Apple M1Macでバーコードスキャンを実行できます。
ここに画像の説明を挿入

おすすめ

転載: blog.csdn.net/RoffeyYang/article/details/114024628