最近在想把文件编码到图像,于是就先试着把文件编码到了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')

发表评论

邮箱地址不会被公开。 必填项已用*标注