我用的是anaconda环境,在anaconda命令行下,用pip分别安装以下库文件:
pip install opencv-python
pip install numpy
pip install pillow
pip install myqr
pip install qrcode
pip install zxing
生成二维码
打开pycharm,新建一个工程,生成二维码的代码如下:
from PIL import Image
import qrcode
if __name__ == '__main__':
qr = qrcode.QRCode(version=5, error_correction=qrcode.constants.ERROR_CORRECT_H, box_size=8, border=4)
qr.add_data("www.baidu.com!")
qr.make(fit=True)
img = qr.make_image()
img = img.convert("RGBA")
# 自己选择一个需要放在二维码中央的图片保存到目录下 我这里用的是 img.png
icon = Image.open("img.png")
img_w, img_h = img.size
factor = 4
size_w = int(img_w / factor)
size_h = int(img_h / factor)
icon_w, icon_h = icon.size
if icon_w > size_w:
icon_w = size_w
if icon_h > size_h:
icon_h = size_h
icon = icon.resize((icon_w, icon_h), Image.ANTIALIAS)
w = int((img_w - icon_w) / 2)
h = int((img_h - icon_h) / 2)
icon = icon.convert("RGBA")
img.paste(icon, (w, h), icon)
img.show() # 显示图片,可以通过save保存
生成了如下图片:
识别二维码
在加载
from pyzbar import pyzbar
的过程中,可能会出现报错,此时可以安装上这个Visual C++ 2013可以解决:
解码函数如下:
def decode_qr_code(code_img_path):
if not os.path.exists(code_img_path):
raise FileExistsError(code_img_path)
return pyzbar.decode(Image.open(code_img_path), symbols=[pyzbar.ZBarSymbol.QRCODE])