- 要件
- RaspberryPiへのOpenCVのインストール
- 他の必要なパッケージのインストール
- Raspberry piQRコードリーダーハードウェアのセットアップ
- Raspberry PiQRコードリーダーのPythonコード
- Raspberry PiQRコードスキャナーのテスト
QRコード(クイックレスポンスコード)は、位置データ、識別子、ウェブサイトやアプリを識別するトラッカーなど、添付されているアイテムに関する情報を含むマトリックスバーコードの一種です。これは、機械で読み取り可能な光学式です。 2D画像の形式で、パターンが異なるラベル。QRコードとQRコードの生成方法の詳細については、前のチュートリアルに従ってください。
このチュートリアルでは、OpenCVおよびZBarライブラリを使用してRaspberryPiベースのQRコードスキャナーを構築します。ZBarは、さまざまなタイプのバーコードとQRコードを検出およびデコードするための最適なライブラリです。OpenCVは、ビデオストリームから新しいフレームを取得し、それを処理するために使用されます。OpenCVがフレームをキャプチャしたら、それをZBarなどの専用のPythonバーコードデコードライブラリに渡して、バーコードをデコードしてそれぞれの情報に変換できます。
要件
- Raspberry Pi 3(任意のバージョン)
- Piカメラモジュール
このRaspberryPi 3 QRコードスキャナーを使用する前に、まず、OpenCV、バーコードデコードライブラリZBar、imutils、およびその他の依存関係をこのプロジェクトにインストールする必要があります。ここでは、OpenCVをデジタル画像処理に使用しています。デジタル画像処理の最も一般的なアプリケーションは、オブジェクト検出、顔認識、および人のカウンターです。
RaspberryPiへのOpenCVのインストール
ここでは、OpenCVライブラリがRaspberry PiQRスキャナーに使用されます。OpenCVをインストールするには、まずRaspberryPiを更新します。
sudo apt-get update
次に、RaspberryPiにOpenCVをインストールするために必要な依存関係をインストールします。
sudo apt-get install libhdf5-dev -y sudo apt-get install libhdf5-serial-dev –y sudo apt-get install libatlas-base-dev –y sudo apt-get install libjasper-dev -y sudo apt-get install libqtgui4 –y sudo apt-get install libqt4-test –y
その後、以下のコマンドを使用してRaspberryPiにOpenCVをインストールします。
pip3 install opencv-contrib-python == 4.1.0.25
以前はRaspberrypiでOpenCVを使用し、多くのチュートリアルを作成しました。
- CMakeを使用してRaspberryPiにOpenCVをインストールする
- RaspberryPiとOpenCVによるリアルタイムの顔認識
- RaspberryPiとOpenCVを使用したナンバープレート認識
- OpenCVとRaspberryPiを使用した群集サイズの推定
また、初心者レベルから始まる一連のOpenCVチュートリアルを作成しました。
他の必要なパッケージのインストール
ZBarの インストール
Zbarは、さまざまなタイプのバーコードとQRコードを検出およびデコードするための最適なライブラリです。以下のコマンドを使用して、ライブラリをインストールします。
pip3インストールpyzbar
imutilsの インストール
imutilsは、OpenCVを使用して、変換、回転、サイズ変更、スケルトン化、Matplotlib画像の表示などの重要な画像処理機能を簡単にするために使用されます。以下のコマンドを使用して、imutilsをインストールします。
pip3 install imutils
argparseの インストール
以下のコマンドを使用して、argparseライブラリをインストールします。 argparse は、コマンドライン引数の解析を担当します。
pip3 install argparse
Raspberry piQRコードリーダーハードウェアのセットアップ
ここでは、Raspberry Pi Cameraを使用するこのQRコードスキャナーに必要なのはRaspberryPiとPiカメラのみであり、Raspberrypiで指定されたカメラスロットにカメラリボンコネクタを接続するだけです。
Piカメラは、Raspberry Pi Surveillance Camera、Visitor Monitoring System、Home SecuritySystemなどのさまざまな興味深いプロジェクトを構築するために使用できます。
Raspberry PiQRコードリーダーのPythonコード
Raspberry Pi QRリーダーの完全なコードは、ページの最後に記載されています。Raspberry Piをプログラムする前に、コードを理解しましょう。
したがって、通常どおり、必要なすべてのパッケージをインポートしてコードを開始します。
from imutils.video import VideoStream from pyzbar import pyzbar import argparse import datetime import imutils import time import cv2
次に、引数パーサーを作成し、引数を解析します。コマンドライン引数には、CSVファイルのパスに関する情報が含まれています。CSV(カンマ区切り値)ファイルには、ビデオストリームのすべてのバーコードのタイムスタンプとペイロードが含まれています。
ap = argparse.ArgumentParser()ap.add_argument( "-o"、 "--output"、type = str、default = "barcodes.csv"、help = "バーコードを含むCSVファイルを出力するパス")args = vars( ap.parse_args())
その後、ビデオストリームを初期化し、USB Webカメラを使用している場合は、コメント行のコメントを解除します。
#vs = VideoStream(src = 0).start()vs = VideoStream(usePiCamera = True).start()time.sleep(2.0)
ループ 内で、ビデオストリームからフレームを取得し、サイズを400ピクセルに変更します。フレームを取得したら、 pyzbar.decode 関数を呼び出して、QRコードを検出してデコードします。
frame = vs.read()frame = imutils.resize(frame、width = 400)バーコード= pyzbar.decode(frame)
次に、検出されたバーコードをループしてバーコードの場所を抽出し、画像上のバーコードの周囲に境界ボックスを描画します。
バーコード内のバーコードの場合:(x、y、w、h)=バーコード.rectcv2.rectangle(frame、(x、y)、(x + w、y + h)、(0、0、255)、2)
次に、 decode( "utf-8") 関数を使用して、検出されたバーコードを "utf-8"文字列に デコード し、barcode.type関数を使用してバーコードのタイプを抽出します。
バーコードデータ= barcode.data.decode( "utf-8")バーコードタイプ=バーコード.type
その後、抽出したバーコードデータとバーコードタイプをtextという名前の変数に保存し、バーコードデータを描画して画像に入力します。
text = "{}({})"。format(barcodeData、barcodeType)cv2.putText(frame、text、(x、y-10)、cv2.FONT_HERSHEY_SIMPLEX、0.5、(0、0、255)、2)
次に、バーコードデータとバーコードタイプを含む出力を表示します。
cv2.imshow( "バーコードリーダー"、フレーム)
最後のステップで、キー「s」が押されているかどうかを確認してから、メインループを解除して、クリーンアッププロセスを開始します。
key = cv2.waitKey(1)&0xFF# `s`キーが押された場合、キー== ord(" s ")の場合はループから抜けます:break print(" clean up… ")csv.close( )cv2.destroyAllWindows()vs.stop()
Raspberry PiQRコードスキャナーのテスト
セットアップの準備ができたら、QRコードリーダープログラムを起動します。カメラからのライブビューを示すウィンドウが表示され、PIカメラの前にバーコードを表示できるようになりました。piがバーコードをデコードすると、下の画像に示すように、バーコードデータとバーコードタイプを含む赤いボックスがその周りに描画されます。
これは、RaspberryPiボードとPiカメラまたはUSBカメラを使用するだけでRaspberryPiカメラQRコードリーダーを簡単に構築する方法です。
このプロジェクトの作業ビデオと完全なコードを以下に示します。