QRコードの作成プログラムについて、まとめておきます。tkinter と pyqrcode を使っています。
以下の環境で動作確認をしています。
環境: Windows パソコン、Python 3.x
背景: QRコードを作成してみる
以前、バーコードの読み取りソフトウェアを作成し、このサイトで公開しています(下記、関連リンク参照)。
すでに、QRコードや一次元バーコードの読み取りが可能になっています。QRコードの作成ができれば、QRコードの作成から読み取りまで、一連の作業のいずれも対応できることになります。
そこで、QRコードを生成するプログラムを作りましたので公開しておくことにします。
なお、下記のプログラムは、QRコードのみ対応しています。他の一次元バーコードを作成したい場合は、関連リンク等を参照してみてください。
pyqrcode のインストール
pyqrcode をインストールしていない場合は、以下でインストールをしてください。
pip install pyqrcode
サンプルコードの設定方法
・ PC のデスクトップなどにフォルダを作成してください。
・ 同フォルダに QRcode_generator1.py 等の名前でテキストファイルを作成してください。このテキストファイルに下記のサンプルコードをコピー&ペーストで貼りつけて保存してください。
なお、QRコードの画像を保存する際は、このフォルダ内に保存されます。
使い方
① コマンドプロンプトから、上記のスクリプトを実行してください。
(例:コマンドプロンプトで上記のフォルダに移動し、”python QRcode_geneartor1.py” + [enter] と入力する。)
② ”barcode data” 欄に、文字列を入力し、「encode」ボタンをクリックしてください。
→ QRコードが作成されます。
※ 作成したQRコードの画像を保存する場合は、「save」ボタンをクリックしてください。
→ フォルダ内に PNG 画像が保存されます。
“file name” 欄のファイル名を変えると、保存するファイル名を変更できます。保存できるフォーマットは PNG 形式のみです。
スクリプトの説明
・ GUI を使うために tkinter をインポートしています。GUI の作り方は、下記の関連リンク等でまとめた内容と同等です。
・ バーコード作成のための「encode」ボタンをクリックすると、encode1() 関数が呼び出されます。
・ ”data1 = …” とした行で、GUI に入力されているバーコードデータ用の文字列を取得しています。
・ つぎに、”qr1 = pq1.create( data1 )” として、QRコードのオブジェクトを生成し、画像データ xbm1 を作っています。pyqrcode は、白黒画像 xbm での出力が可能となっています。
・ 一方、tkinter は、xbm の読み込みが可能です。そこで、xbm 画像を tkinter の画像形式 img1 に変換し、GUI 上のラベル label3 に表示しています。
まとめ
QRコードの作成が自由にできるようになりました。QRコードの作成から読み取りまで自由自在となりました。
なお、物体認識という観点では、顔認識、バーコード認識はすでに動いています。
バーコードや顔認識のみならず、Tensorflow などを用いた一般的な物体認識についてもカバーできるかなといったところです。
関連リンク
・ バーコードリーダ 【QRコード対応】
・ 動作確認済み USB カメラ 【おすすめ】
・ バーコード作成ソフトウェア 【Python & Tkinter】
・ Python カレンダー 【tkinter】
外部リンク
・ PyQRCode 1.2.1
サンプルスクリプト: QRcode_generator1.py
#!/usr/bin/env python
# -*- coding: utf8 -*-
import os
import tkinter as tk1
import pyqrcode as pq1
def encode1():
global qr1, img1
data1 = str( textbox1.get() )
# print( data1 )
qr1 = pq1.create( data1 )
xbm1 = qr1.xbm( scale=8 )
img1 = tk1.BitmapImage( data = xbm1 )
label3.config( image = img1 )
def save1():
global path1
file1 = path1 + str( textbox2.get() )
print( file1 )
qr1.png( file1, scale=8 )
path1 = os.path.dirname(__file__) + "\\"
frame1 = tk1.Tk()
frame1.title(u"QRcode_generator v0.1")
frame1.geometry("450x400")
label1 = tk1.Label(text='barcode data', anchor='w')
label1.place(x=10, y=10, width=100)
label2 = tk1.Label(text='file name', anchor='w')
label2.place(x=10, y=40, width=100)
label3 = tk1.Label( frame1, bg='white' )
label3.place(x=25, y=70, width = 400, height = 300)
textbox1 = tk1.Entry( master=frame1 )
textbox1.place(x=100, y=10, width=200)
textbox2 = tk1.Entry( master=frame1 )
textbox2.place(x=100, y=40, width=200)
textbox2.delete( 0, tk1.END )
textbox2.insert( 0, "file01.png" )
button1 = tk1.Button( frame1, text='encode', command=encode1 )
button1.place(x=320, y=5, width=100)
button2 = tk1.Button( frame1, text='save', command=save1 )
button2.place(x=320, y=35, width=100)
qr1 = 0
img1 = 0
frame1.mainloop()