前回の記事では、Python環境のインストーラーのダウンロードとパソコン(Windows)への
インストールを実施して、Python環境の構築を紹介しました。
最低限のPython環境が、パソコンに構築されている事を前提に、今回は、便利なツールとして、
Pythonで、QRコードの生成ツールを紹介します。
QRコード(キューアール・コード)
QRコードは、1994年(平成6年)に愛知県の自動車部品メーカーであるデンソーの開発部門
(現在は分社化してデンソーウェーブ)が発明したマトリックス型二次元コードになります。
現在では、世界各地やインターネット上でも、データの読み取りや決済用コードとして多用
されていますので、毎日のように目にしたり、スマホのカメラ機能を利用して、QRコードを
読み取った経験も多いと思います。
QRコードの詳細については、下記を参照して下さい。
Python パッケージ(ライブラリ)の確認
Pythonは、世界中にモジュールやパッケージ、ソースコードの記載例が多く存在しています。
Pythonは、システム開発やアプリケーション、ツール作成をする際、1から手書きをしなくても、
実績が有るモジュールやパッケージを組み合わせて、開発作業を進めることが出来ます。
これは、作業効率が良いばかりでは無く、手書きが少なくなる事により、無駄なバグを減らし、
強靭且つ安定したプログラムとなり、お客様や利用者の信頼性と利便性が向上します。
Pythonでは、パッケージの管理とインストールに、ツールの pip を利用します。
pip は、The package installer for Python の意味です。
利用方法としては、コマンドプロンプト や PowerShell で、コマンドラインとして、
python -m pip list を入力することで、現在、インストールされているパッケージを
一覧で表示させることが出来ます。
前回の記事で、Python環境がインストールされたばかりの状態では、上記のように、
パッケージは pip のみがインストールされています。
Python パッケージ(ライブラリ)のインストール
Pythonでは、QRコードの生成に必要なqrcodeライブラリをインストールする必要が有ります。
単にQRコードを生成するだけでしたら、qrcodeライブラリをインストールだけで済みます。
コマンドは、python -m pip install qrcode になります。
今回は、より多くの画像処理を行ったり、今後の画像処理の事を考慮して、pillowライブラリとの
依存関係を含むqrcodeライブラリ(pillowライブラリを含む)をインストールしてみましょう。
コマンドは、python -m pip install qrcode[pil] になります。
インストールされているパッケージを、一覧で確認してみましょう。
python -m pip list を入力します。
上記のように、qrcodeライブラリとpillowライブラリが無事にインストールされました。
OpenCVライブラリ のインストール
pillowライブラリに加えて、画像の読み込み、表示、保存、画像処理、特徴検出、物体追跡、
機械学習を考慮して、OpenCVライブラリもインストールしておきましょう。
OpenCV(Computer Vision)は、インテルのComputer Vision向けオープンソースライブラリで、具体的には、画像処理、画像解析、機械学習などが行えます。主にC++で書かれていますが、Pythonなど他の言語でも使用することが出来ます。
コマンドは、python -m pip install opencv-python になります。
上記のように、OpenCVライブラリも無事にインストールされました。
QRコード 生成ツール
QRコードの生成に必要な、Pythonのライブラリがインストールされましたので、
実際にQRコードの生成ツールを開発して行きます。
統合開発環境(IDLE)の起動
先ずは、Python開発向けに、統合開発環境(IDLE)を起動しましょう。
Windowsメニューより、IDLE(Python 3.13 63bit)をクリックします。
バージョンの異なるPython環境をインストールした場合は、該当の統合開発環境(IDLE)を
起動してみて下さい。
上記のように、IDLE Shell が起動されたと思います。
上部のタブメニューより、File → New File を選択して、新規画面を起動します。
上記のような、真っ白な画面が起動されたと思います。
QRコード 生成ソース例
実用的に使える、QRコード 生成ツールを開発していきましょう。
入力したURLから、QRコード が生成されたら、とても便利ですよね。
それでは、ソースを紹介します。
import qrcode
from PIL import Image
import cv2
outfile = "C:/work/python/data/qrcode.png" # pngファイルに保存
def Create_QRCode(msg):
qr = qrcode.QRCode(
version=1,
error_correction=qrcode.constants.ERROR_CORRECT_M,
box_size=10,
border=4,
)
qr.add_data(msg)
qr.make(fit=True)
img = qr.make_image(fill_color="black", back_color="white")
img.save(outfile)
#img.show()
out_img = cv2.imread(outfile)
cv2.imshow("QRCode", out_img)
cv2.waitKey(0)
if __name__ == "__main__":
try:
while True:
msg = input("Enter a message = ")
msg_leng = len(msg)
print('msg_leng : ', msg_leng)
print('---------------------------')
Create_QRCode(msg)
except Exception as e:
print("Exception : ", e)
finally:
print("Create QRcode End...")
ソースをコピー&ペーストして、名前を付けて保存して下さい。
例では、Create_QRCode.py という名前で保存しています。
ソースの解説
from PIL import Image
import cv2
こちらは、先程、インストールした3つのライブラリの利用が出来るように、
先頭文でライブラリ環境をインポートしています。
こちらは、QRコードの画像(png形式)を、保存する場所を指定しています。
お手元のパソコンのフォルダ構成に合わせて、修正して下さい。
こちらは、QRコードを生成する関数名:Create_QRCodeを定義しています。
version=1,
error_correction=qrcode.constants.ERROR_CORRECT_M,
box_size=10,
border=4,
)
こちらは、QRCodeメソッドを利用して、QRコードの形式、エラー訂正、サイズ、余白などを
制御することが出来ます。
引数:versionは、値が大きくなると、QRコードに含まれるセル(黒白の四角)の数が多くなり、
画像サイズと情報量が増えます。
version=1が最小で、version=40が最大となります。
引数:error_correctionは、誤り訂正レベルを設定できます。
今回は、ERROR_CORRECT_M を利用しています。
誤り訂正レベルは、下記となります。
- ERROR_CORRECT_L:約7%以下の誤差は、修正可能
- ERROR_CORRECT_M:約15%以下の誤差は、修正可能
- ERROR_CORRECT_Q:約25%以下の誤差は、修正可能
- ERROR_CORRECT_H:約30%以下の誤差は、修正可能
誤り訂正レベルについては、下記を参照して下さい。
引数:box_sizeは、QRコードのセル(四角い黒白の点)のサイズ(ピクセル)を設定します。
引数:borderは、QRコードの外周の余白の幅(セルの数)を設定します。
img.save(outfile)
make_image()メソッドの引数:fill_color, back_colorで、QRコードのセルの色を設定します。
QRコードのセルの色は、QRCode()の引数ではないので、注意が必要です。
cv2.imshow(“QRCode”, out_img)
cv2.waitKey(0)
こちらは、OpenCVの機能を用いて、保存したQRコードの画像の読み込みと表示をしています。
imreadメソッドで、QRコードの画像の読み込みを行っています。
imshowメソッドで、QRコードの画像を画面上に表示しています。
第一引数:”QRCode” は、QRコードの画像のタイトル(上段)を設定しています。
waitKeyメソッドは、キーボード入力を処理する関数です。
引数は、入力待ち時間の意味で、ミリ秒単位で指定します。
今回のように、引数:0 を指定した時は、何かしらのキーを打つまでは、
キー入力を無期限で待ち続ける設定です。
画面上に表示されたQRコードの画像を非表示にする場合は、右上の×ボタンを押します。
ツールの起動
作成したソース画面の上部のタブメニューより、Run → Run Module を選択して、
ツールを動かしてみましょう。
ツールを起動して、エラーが無ければ、IDLE Shell には、「Enter a message = 」
が表示されます。
QRコードを生成したい、URLを入力してみましょう。
今回は、Yahoo! JapanのトップページのURLを入力してみます。
Yahoo! JapanのトップページのURLを入力後、Enterキーを押すと、
入力したURLの長さ:24(バイト文字)が表示されます。
別の画面で、QRコードの画像がポップアップされていることが分かると思います。
実際に、上記のQRコードの画像に、スマホのカメラ機能で読み込むと、Yahoo! Japanの
トップページへ遷移することが確認出来ると思います。
QRコードの画像が保存された場所を、確認してみましょう。
qrcode.pngをダブルクリックすると、保存されたQRコードの画像が表示されます。
まとめ
今回は、便利なツールとして、Pythonで、QRコードの生成ツールを紹介しました。
記事の例では、Yahoo! JapanのトップページのURLを入力しましたが、色々なURLを入力して
QRコードの生成が出来るか、試してみて下さい。
Python開発としては初めての記事でしたので、ツールで必要となるパッケージ(ライブラリ)の
インポート方法や、統合開発環境(IDLE)の起動、ソースの解説、ツールの起動方法、
QRコードの画像の確認と、出来るだけ丁寧に解説して来ました。
次回以降も、Pythonで実装が出来る便利なツール、役立つツールを紹介したいと思います。
- イラスト:いらすとや より引用


















コメント