1、Python下二维码识别包的使用详情php
在python下二维码识别,目前主要有三个模块:zbar 、zbarlight、zxing。html
未使用zbarlight,缘由是zbarlight和zbar的dll相同,二维码识别准去率没提高。另外,该包的pip安装存在一些问题未解决。java
一、安装包:python
pip install opencv-pythonredis
pip install pillow image zxing算法
pip install pyzbar微信
二、 安装使用包过程当中遇到的问题:ui
A、使用zxing是,出现“FileNotFoundError: [WinError 2”spa
解决办法:安装java(jdk、jre均可以)。缘由是zxing要调用一些java文件,要求java文件可被执行。.net
B、安装zbarlight出现“Microsoft Visual C++ 14.0 is required.”
解决办法:放弃。 缘由:安装完vc_redist.x86后,仍是会报相关的错误。
四、 使用详情
Pyzbar和zxing识别4张包含二维码的图片(图片以下),目前都只识别出来了前两张。微信(支付宝)扫一扫,4张均可以识别出来
pyzbar相关代码:
import pyzbar.pyzbar as pyzbar from PIL import Image, ImageEnhance def zabr_parser(image): img = Image.open(image) # img = ImageEnhance.Brightness(img).enhance(2.0)#增长亮度 # img = ImageEnhance.Sharpness(img).enhance(17.0)#锐利化 # img = ImageEnhance.Contrast(img).enhance(4.0)#增长对比度 img = img.convert('L')#灰度化 img = img.convert("1") img.show() barcodes = pyzbar.decode(img) for barcode in barcodes: barcodeData = barcode.data.decode("utf-8") print(barcodeData)
zxing相关代码:
1 from PIL import Image 2 import zxing # 导入解析包 3 4 5 def ocr_qrcode_zxing(filename): 6 img = Image.open(filename) 7 zx = zxing.BarCodeReader() # 调用zxing二维码读取包 8 data = '' 9 zxdata = zx.decode(filename) # 图片解码 10 return zxdata.parsed # 返回记录的内容
四、使用的图片
2、对比:
一、zbar和zbarlight内核一致,都是基于zbar的dll编译加载的。zbarlight使用比zbar更简单,不过是在zbar的基础又作了封装,增长易用性,二维码识别准确率没有提升。
二、zxing是基于java的zxing核心的python分支,其原理是调用javaw 加载zxing的core.jar包,再获取输出结果。
三、微信和支付宝的扫一扫功能较python的这三个包强大不少,是有本身的算法(微信扫一扫使用了zxing,应该作了必定的修改。参考https://my.oschina.net/yushulx/blog/495471)