PythonとOpenCVのみでPCのWebカメラからQRコードを読み取っている記事が意外となかったのでやってみました。
使用環境は以下の通りです。
- MacBook Pro (15-inch, 2019)
- MacOS Catalina 10.15.7
- Python 3.9.0
- opencv-python 4.5.2.54
Pythonのインストールは済んでいる前提です。
1. opencv-pythonのインストール
PythonからOpenCVが使用できるopencv-pythonをpipでインストールします。
$ pip install opencv-python
2. QR読み取りコード
import cv2
# カメラデバイス取得
cap = cv2.VideoCapture(0)
# QRCodeDetectorを生成
detector = cv2.QRCodeDetector()
while True:
# カメラから1フレーム読み取り
ret, frame = cap.read()
# QRコードを認識
data = detector.detectAndDecode(frame)
# 読み取れたらデコードした内容をprint
if data[0] != "":
print(data[0])
# ウィンドウ表示
cv2.imshow('frame', frame)
# Qキー押すと終了
if cv2.waitKey(1) & 0xFF == ord('q'):
break
# 終了処理
cap.release()
cv2.destroyAllWindows()
3. 実行結果
こんな感じでiPhoneにQRコードを表示させてMacBookのカメラに写しています。
https://qiita.com/
https://qiita.com/
https://qiita.com/
...
まとめ
PythonとOpenCVだけでも少ないコードで簡単にできます。便利ですね。
上のコードの変数dataにはデコードした文字列以外にもいろいろと情報が入ってきてくれるみたいなので、それも時間があったら調べてみます。