最近在想把文件编码到图像,于是就先试着把文件编码到了QRCode,然后再解码恢复。python生成qrcode的包就是qrcode包,识别二维码并解码使用的是zbar。这篇博客就简单说下这两个工具的使用。
生成qrcode
没错,直接粘代码,简单粗暴。简单说下,add_data为追加字符串,如果要重新编码新的字符串,再add之前要clear一下。
import os
import qrcode
import cv2
import numpy
from PIL import Image
from pyzbar import pyzbar
qr = qrcode.QRCode(version=1,
error_correction=qrcode.constants.ERROR_CORRECT_L,
box_size=4,
border=4,
)
qr.clear()
qr.add_data(proto_head+str(b))
qr.make(fit = True)
img = qr.make_image()
mat = cv2.cvtColor(numpy.asarray(img.get_image().convert('RGB')),cv2.COLOR_RGB2BGR)
cv2.imshow("", mat)
cv2.waitKey(10)
#img.get_image().show()
#img.save(('data/qrcode/%d.png')%(patch_id))
识别qrcode
调用pyzbar来识别,也是简单粗暴的直接贴代码
from pyzbar import pyzbar
def DecodeQR(filename):
if not os.path.exists(filename):
raise FileExistsError(filename)
return pyzbar.decode(Image.open(filename), symbols=[pyzbar.ZBarSymbol.QRCODE])
imagefile = 'qrcode.png'
qrinfo = DecodeQR(imagefile)[0].data.decode('utf-8')