Python检测图片二维码:pyzbar库实战与代码示例
本文介绍如何使用Python检测图片中是否包含二维码。通过对比已停止维护的zbar库,推荐使用pyzbar库结合Pillow进行图像解码。文章提供了详细的安装步骤、测试图片准备方法以及完整的Python代码示例,包括如何遍历文件夹、调用pyzbar.decode()解码并输出结果,同时提及了通过调整亮度提高识别率的备选方案。
前言
前言
由于在不同平台发布文章时,部分平台不会检测文章内图片是否包含二维码,而另一些平台则会进行检测,因此笔者研究了如何利用Python进行二维码检测。经过搜索,发现主要有两个可用的库:
- 一个是zbar,该库功能强大,但仅支持Python 2.7,且已停止维护。考虑到Python 2.7已于2020年1月停止支持,目前仍使用该版本的开发者应及时升级。
- 另一个是pyzbar,它基本继承了zbar的功能。
安装与测试准备
安装
安装依赖库
pip install pyzbar -i http://pypi.douban.com/simple --trusted-host pypi.douban.com
pip install Pillow
测试环境准备
测试
准备图片
首先,从二维码生成网站准备一批二维码图片作为测试素材,同时也包含一些不含二维码的图片。

Python实现代码
代码
使用方法如图所示,图片通过Pillow库打开,再利用pyzbar的decode方法进行解码,具体代码如下:
核心代码解析
import pyzbar.pyzbar as pyzbar
from PIL import Image,ImageEnhance
import os
img_dir = "..\\img"
def open_img():
img_list = []
for _,_,file_list in os.walk(img_dir):
img_list = [os.path.join(img_dir,file) for file in file_list if file.endswith(".jpg") or file.endswith(".png") ]
print("所有文件:{}".format(img_list))
return img_list
def show():
img_list = open_img()
for _img in img_list:
img = Image.open(_img)
# 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')#灰度化
texts = pyzbar.decode(img)
if not texts:
print("{}文件不存在二维码".format(_img))
for text in texts:
t = text.data.decode("utf-8")
if t:
print("{}文件存在二维码,内容为:{}".format(_img,t))
if __name__ == '__main__':
show()
注释掉的代码可在图片识别率较低时启用,用于提升图片亮度。
运行结果与总结
运行结果

所有测试图片均被正确识别,效果良好。
以上就是如何利用Python检测图片是否包含二维码的详细内容,更多关于Python二维码的资料请关注本站其它相关文章!
本站声明
本文内容仅供参考,不代表本站观点。转载或引用请注明出处。如发现内容问题,请通过联系我们页面反馈。













