Python | OpenCVでQRコードリーダーを作成する
- 2022.09.22
- Python

みなさん、こんにちは!
今回はOpenCVのQRコードリーダ機能を利用して、簡易的なバーコードリーダを作成したいと思います。
↓簡易的なイメージ図

準備したもの
iphoneに以下のQRコードを投影します。(帳票の代わりです)

このQRコードを映したiPhoneを、カメラにかざすことでデータを読み取らせます。
コード
前回の記事のコードを改良しています。
import cv2
try:
# 1)カメラIDを設定
camera = cv2.VideoCapture(1)
# 2)QRCodeDetectorオブジェクトを生成
QRCD = cv2.QRCodeDetector()
# 3)繰り返し画像を取得する
while True:
# 4)設定したカメラから画像を取得
ret, img = camera.read()
# 5)画像を表示する / 引数=(Window名,表示したい画像)
cv2.imshow('Camera',img)
# 6)QRコードの読み取り
# data: QRコードの内容
# points: QRコードの座標データ
# b_img: QRコード画像のバイナリデータ
data,points,b_img = QRCD.detectAndDecode(img)
# 7)Escが入力されたらループ処理を終了する
key = cv2.waitKey(10)
if key == 27:
break
# 8)QRコードが読み取られたらループを終了する
if data !='':
print(data)
break
# 9)入力されたら、ウィンドウを閉じる
cv2.destroyAllWindows()
# 10)カメラのメモリを解放する
camera.release()
# except) Error時
except FileNotFoundError as e:
print(e)
検証結果
プログラムを実行し、QRコードをかざすことで、以下の情報が出力できれば成功です。
https://miseruit.com/
小ネタ:読み取り成功時に音を出す
改良したのは8)の部分です。
import winsoundをし、winsound.Beep(2000, 200) とすることで 2000Hzで200msecのビープ音を鳴らすことができます。(Windowsのみで使用可能)
import cv2
import winsound
try:
# 1)カメラIDを設定
camera = cv2.VideoCapture(1)
# 2)QRCodeDetectorオブジェクトを生成
QRCD = cv2.QRCodeDetector()
# 3)繰り返し画像を取得する
while True:
# 4)設定したカメラから画像を取得
ret, img = camera.read()
# 5)画像を表示する / 引数=(Window名,表示したい画像)
cv2.imshow('Camera',img)
# 6)QRコードの読み取り
# data: QRコードの内容
# points: QRコードの座標データ
# b_img: QRコード画像のバイナリデータ
data,points,b_img = QRCD.detectAndDecode(img)
# 7)Escが入力されたらループ処理を終了する
key = cv2.waitKey(10)
if key == 27:
break
# 8)QRコードが読み取られたらbeepオンを鳴らす
if data !='':
winsound.Beep(2000, 200)
print(data)
break
# 9)入力されたら、ウィンドウを閉じる
cv2.destroyAllWindows()
# 10)カメラのメモリを解放する
camera.release()
# except) Error時
except FileNotFoundError as e:
print(e)
今回は以上です!
ではまた!
-
前の記事
Pythonの開発環境整備 | RaspberryPiでJupyter Notebookサーバ構築 2022.09.18
-
次の記事
Python | OpenCVで顔を検出する 2022.09.23