Python检测图片二维码:pyzbar库实战与代码示例

Ryan
Ryan
发布时间:2026-10-14 | 4人浏览过
原创

本文介绍如何使用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二维码的资料请关注本站其它相关文章!

相关标签:

本站声明

本文内容仅供参考,不代表本站观点。转载或引用请注明出处。如发现内容问题,请通过联系我们页面反馈。

Python 相关产品和应用

全部下载

专题列表