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でバーコードスキャンを実行できます。