前言
好久没更新了,最近一个月主要在忙自己的毕业论文,最后查重7.1%还行吧,哈哈哈!!!趁着有点空闲时间来写一下公司最近的一个项目,识别二维码内容信息。一、安装所需的库
1.用conda
新建环境按自己的喜好命名,这个应该不用多说了,不懂的可以参照我之前的文章conda创建、删除虚拟环境、换源,安装必须的qrcode
库,其他库按代码所需添加。
pip install qrcode
2.这里简单说下QRCode
方法
1. qrcode.QRCode(
2. version=1,
3. error_correction=qrcode.ERROR_CORRECT_L,
4. box_size=10,
5. border=4,
6. image_factory=None,
7. mask_pattern=None
8. )
参数解释:
version
:控制二维码的大小,取值范围从1到40。取最小值1时,二维码大小为21*21。取值为 None (默认)或者使用fit=true参数(默认)时,二维码会自动调整大小。(17+4N)error_correction
:控制二维码纠错级别。ERROR_CORRECT_L
:大约7%或者更少的错误会被更正。ERROR_CORRECT_M
:默认值,大约15%或者更少的错误会被更正。ERROR_CORRECT_Q
:大约25%或者更少的错误会被更正。ERROR_CORRECT_H
:大约30%或者更少的错误会被更正。
box_size
:控制二维码中每个格子的像素数,默认为 10。border
:控制二维码四周留白包含的格子数,默认为4。image_factory
:选择生成图片的形式,默认为 PIL 图像。mask_pattern
:选择生成图片的的掩模。
二、二维码生成
这里就简单写下生成过程,因为我们研究的主要是二维码的识别过程!!!
直接上代码:
# -*- coding:utf-8 -*-
# @Time : 2021/5/6 9:37
# @Author : JulyLi
# @File : 生成二维码.py
# @Software: PyCharm
import qrcode
contain = "Hello World"
qr = qrcode.QRCode(version=1,
error_correction=qrcode.constants.ERROR_CORRECT_L,
)
qr.add_data(contain)
qr.make(fit=True)
img = qr.make_image()
img.save('hello_world.png')
生成结果为:
三、二维码识别
import os
# import webbrowser
import requests
from io import BytesIO
from pyzbar import pyzbar
from PIL import Image, ImageEnhance
# 信息保存地址
write_path = open(r'E:\changmiao\qrcode\res.txt', 'a')
def get_ewm(img_adds):
""" 读取二维码的内容: img_adds:二维码地址(可以是网址也可是本地地址 """
if os.path.isfile(img_adds):
# 从本地加载二维码图片
img = Image.open(img_adds)
else:
# 从网络下载并加载二维码图片
rq_img = requests.get(img_adds).content
img = Image.open(BytesIO(rq_img))
# img.show() # 显示图片,测试用
txt_list = pyzbar.decode(img)
for txt in txt_list:
barcodeData = txt.data.decode("utf-8")
print(barcodeData)
write_path.write(barcodeData + '\n')
# webbrowser.open(barcodeData, new=0, autoraise=True)
# print(webbrowser.get())
if __name__ == '__main__':
# 解析本地二维码
get_ewm(r'E:\changmiao\qrcode\hello_world.png')
# 解析网络二维码
# get_ewm('https://gqrcode.alicdn.com/img?type=cs&shop_id=445653319&seller_id=3035998964&w=140&h=140&el=q&v=1')
运行程序后终端显示Hello World
res.txt
保存结果
总结
基于qrcode
二维码识别过程还是挺强大的,有些手机无法识别的二维码,通过qrcode
库能正确识别。
例如:
正常情况下通过手机是无法扫出来的(反正我的手机扫不出来),但通过识别代码却能识别出来。
结果为一个链接,点开之后就能看到详细信息。
如果阅读本文对你有用,欢迎关注点赞评论收藏呀!!!
2021年5月19日10:50:05