怎么用python检测图片中是否包含二维码?

前言

因为一直在几个平台发文章,发现有些平台并不会检测文章中的图片是否会包含二维码,但是其中也有平台会去检测,所以就去研究了一下python如何去检测。搜了一下大概有两个库可以使用:

  • 一个是zbar,这个库是挺牛的,不过只支持python2.7,再者也没有继续维护,什么年代了,应该没人使用python2.7了吧(2020年1月以后连python2.7都不再维护了,有还在使用的童靴该跟上时代了)。
  • 一个是pyzbar,基本上传承了zbar的功能。

安装

顺便把Pillow库也安装了,安装时候最好加上豆瓣源,这样就很快能搞定安装。

pip install pyzbar  -i http://pypi.douban.com/simple --trusted-host pypi.douban.com
pip install Pillow

测试

准备图片

首先去二维码生成网站准备一堆二维码作为测试准备,我准备了一些图片,也有不包含二维码的。
在这里插入图片描述

代码

使用方法如下图,图片使用Pillow库打开,再用pyzbardecode解码,代码如下:

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检测图片中是否包含二维码?》 罗华 采用 知识共享署名 4.0 国际许可协议 进行许可。
 上一篇
爬虫必看,每日JS逆向之爱奇艺密码加密,今天你练了吗? 爬虫必看,每日JS逆向之爱奇艺密码加密,今天你练了吗?
本次目标是抠出爱奇艺passwd加密JS代码,如果你看到了这一篇,说明你对JS逆向感兴趣,如果是初学者,那不妨再看看我之前的一些文章,可能对你的学习路有些帮助,跟着一起调试,对JS加密方法理解会更深点。如果调试不出来,可以参考我的代码,本
2020-08-23
下一篇 
兄弟们,我打算抠100个网站JS加密代码来召唤神龙,支持的点个赞,这次轮到小虎牙 兄弟们,我打算抠100个网站JS加密代码来召唤神龙,支持的点个赞,这次轮到小虎牙
本次研究虎牙登录密码加密JS代码,难度不大,依然建议各位读者参考文章独自完成,实在抠不出来再参考这里的完整代码:从今天开始种树 准备打开网站虎牙,点击登录标签,跳到登录界面: 按下F12,输入错误的账号密码,查看发送的网络请求,从名字就
  目录