どうも!リョクちゃです。
今回はPythonで画像に映ったバーコード(QRコード)を読取り、
読取った結果を表示する方法を紹介していきます。
ちなみに前回の記事はこちら
目次
画像に映ったバーコードを読取る
Pythonで画像に映されたバーコードを読取るには、
pyzbarといったモジュールを使うことで簡単にコードを書くことができます。
ここは先人の知恵をお借りして、コードの開発工数を削減していきましょう。
(ありがとうございます。)
pyzbarをインストールする
自身のPython環境にインストールするには、
コマンドプロンプトを立ち上げて、以下のコマンドを実行します。
もしくは
※このコマンドを実行する前に、以下のコマンドを
念のため、優先して実行しておきましょう。
もしくは
Pythonのコードファイルで使う方法
インストールしたpyzbarを使用するには、
.pyファイル上で、
と書きます。
pyzbarのdecodeクラスを使用します。
今回使用する画像ファイル
以下のサイトで作成したQRコードを使います。
作成したQRコードには“12345678”が含まれています。
画像からバーコードを読取る
バーコードを読取るには、pyzbarのほかに以下のライブラリを使用します。
pthlibではローカルパスに保存された画像ファイルを扱うのに使います。
PILは画像ファイルを読み込むのに使います。
※もしPILがインストールされていなかったら、
バージョンによって違います。
これを組合わせて、以下のコードを書きます。
1 2 3 4 5 6 7 8 9 10 11 12 |
from pyzbar.pyzbar import decode from pathlib import Path from PIL import Image # 画像ファイルの指定 p = Path(r"画像が保存されているパス") # QRコードの読取 data = decode(Image.open(p)) # コードの内容を出力 print(data[0][0].decode('utf-8', 'ignore')) |
まず、画像ファイルのパスを指定します。
それから、画像ファイルを読取り、pyzbarのdecodeを使って
画像内のバーコード(QRコード)を探します。
結果をdata[0][0].decode(‘utf-8’, ‘ignore’)とすることで、
出力がされます。
今回は、printで表示される結果として”12345678″が表示されたらクリアです。
まとめ
Pythonでpyzbarモジュールを使うことで簡単に画像に映った、
バーコードを読取ることができました。
これを応用することで、読み取ったデータで照合ツールや、
画像ファイルのパスと読取った結果を紐付けて、データベースに保存する
といったこともできますね。
複数読取りなどの課題については次回以降まとめていきます。
最後までお読みいただきありがとうございます。