Python で OpenCV を使用して QR コードスキャナーを作成する
私たちは皆、さまざまな製品に存在するバーコードに精通しています。モールス信号に基づいて、バーコードは行とスペースを使用して情報を表し、データを水平方向に格納することで情報を格納します。
最近では、QR コードも人気を博しています。QR コードはボックスに保存され、いくつかのドットが付いた黒と白の正方形の組み合わせを使用して表されます。
また、モールス信号に基づいているため、バーコードのマトリックスの一種と見なすことができます。
QR コードは、ストレージの点で従来のバーコードよりも優れています。データを 2 方向に保存します。したがって、バーコードよりも多くの情報を含めることができます。
この情報には、URL、連絡先、および最大 4,000 文字のその他の情報を含めることができます。最近ではほとんどすべての携帯電話に QR コードスキャナーのアプリケーションがあります。
このチュートリアルでは、Python で OpenCV ライブラリを使用して QR コードスキャナーを作成する方法を示します。
OpenCV ライブラリには、画像を効率的に保存および処理できるさまざまな機能とクラスが含まれています。フレームには、さまざまな事前定義された手法を適用できます。
Python で QRCodeDetector
クラスを使用して OpenCV を使用して QR コードスキャナーを作成する
OpenCV ライブラリのバージョン 4.0.0 では、QRCodeDetector
クラスが導入されました。このクラスには、QR コードの画像を検出およびスキャンするために使用できるメソッドが含まれています。
さまざまな方法を使用して、単一および複数の QR コードをスキャンできます。
このクラスの detect()
メソッドは、画像の QR コードをスキャンするために使用されます。QR コードを含むボックスを見つけます。decode()
メソッドは、検出された QR コードをデコードします。
特定の画像で複数の QR コードを検出するには、detectMulti()
および decodeMulti()
関数を使用できます。曲面上のコードの検出とデコードには、それぞれ detectCurved()
メソッドと decodeCurved()
メソッドを使用します。
detectandDecode()
関数を使用して、画像からコードを同時に検出およびデコードできます。このメソッドには、detectandDecodeCurved()
および detectandDecodeMulti()
メソッドも存在します。
このクラスを使用して非常に単純な QR コードを作成し、次の画像の QR コードをスキャンしてみましょう。
以下のコードを参照してください。
import cv2
img = cv2.imread("2.jpg")
det = cv2.QRCodeDetector()
info, box_coordinates, _ = det.detectAndDecode(img)
if box_coordinates is None:
print("No Code")
else:
print(info)
if box_coordinates is not None:
box_coordinates = [box_coordinates[0].astype(int)]
n = len(box_coordinates[0])
for i in range(n):
cv2.line(
img,
tuple(box_coordinates[0][i]),
tuple(box_coordinates[0][(i + 1) % n]),
(0, 255, 0),
3,
)
cv2.imshow("Output", img)
cv2.waitKey(0)
cv2.destroyAllWindows()
出力:
http://sampleurl.com
上記の例では、QRCodeDetector
クラスのオブジェクトを作成し、detectandDecode()
関数を使用して、指定された画像の QR コードをスキャンしてデコードしました。この関数は、表示されている QR コードの情報を返しました。
また、QR コードを囲むボックスの座標も返しました。これらの座標を使用して、line()
関数を使用して画像に境界を描画しました。
最終的な画像が表示され、waitKey()
および destroyAllWindows()
関数を使用して、このウィンドウが自動的に閉じないようにし、ユーザーがキーを押すのを待ってから閉じます。
この例では、ディレクトリから画像を読み取り、QR コードをスキャンしました。ウェブカメラを使用してそこから画像を読み取ることで、これをよりインタラクティブにすることができます。
OpenCV は、Web カメラからビジュアルをキャプチャして読み取るための VideoCapture
クラスを提供します。
まとめ
このチュートリアルでは、Python の OpenCV ライブラリを使用して簡単な QR コードスキャナーを作成する方法を説明しました。まず、QR コードの基本、バーコードとの比較、保存できる情報について説明しました。
簡単に説明すると、OpenCV ライブラリの QRCodeDetector
クラスについて説明しました。このクラスには、画像から QR コードを検出してデコードするためのさまざまなメソッドが用意されています。このクラスを使用して、特定の画像から QR コードをスキャンおよびデコードする簡単な QR コードスキャナーの例を示しました。
Manav is a IT Professional who has a lot of experience as a core developer in many live projects. He is an avid learner who enjoys learning new things and sharing his findings whenever possible.
LinkedIn