我用的是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 qrcodeif __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.pngicon = Image.open("img.png")img_w, img_h = img.sizefactor = 4size_w = int(img_w / factor)size_h = int(img_h / factor)icon_w, icon_h = icon.sizeif icon_w > size_w:icon_w = size_wif icon_h > size_h:icon_h = size_hicon = 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可以解决:
Download Visual C++ Redistributable Packages for Visual Studio 2013 from Official Microsoft Download Center
解码函数如下:
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])