10
16

More than 3 years have passed since last update.

PythonとOpenCVのみでカメラからQRコード読み取り

Posted at

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. 実行結果

QR_359536.png
こんな感じでiPhoneにQRコードを表示させてMacBookのカメラに写しています。
QR.jpg

https://qiita.com/
https://qiita.com/
https://qiita.com/
...

まとめ

PythonとOpenCVだけでも少ないコードで簡単にできます。便利ですね。
上のコードの変数dataにはデコードした文字列以外にもいろいろと情報が入ってきてくれるみたいなので、それも時間があったら調べてみます。

10
16
0

Register as a new user and use Qiita more conveniently

  1. You get articles that match your needs
  2. You can efficiently read back useful information
  3. You can use dark theme
What you can do with signing up
10
16