【python 图片识别】python识别图片是不是包含二维码

近几天在研究二维码的识别,主要是通过python代码来识别特定图片内是否包含二维码。方法有分类,还有下面我介绍的直接法。

需要安装库

pip install pyzbar 
pip install opencv-python

我们 先准备些二维码

在这里插入图片描述

总共有11个二维码。

下面我们进行二维码识别:

# -*- coding: utf-8 -*-


import os
from pyzbar.pyzbar import decode
import cv2


"""
图片包含二维码检测
"""
def qrcode_recongnize(filepath,filename):
    """
    :param filepath: 图片路径
    :param filename: 图片名字
    :return: qrcode 图片包含二维码,unqrcode 图片不包含二维码
    """
    image_type = []
    try:
        # 读取图片
        image = cv2.imread(filepath+filename)
        # 灰度化
        image=cv2.cvtColor(image,cv2.COLOR_BGR2GRAY)
        # 解码二维码
        result = decode(image)

        if len(result)>0:
            image_type.append('qrcode')

        else:
            image_type.append('unqrcode')
    except:
        image_type.append('unqrcode')
    return image_type



if __name__ == '__main__':

    filepath="F:/img_spam/test/"
    for parent,dirnames,filenames in os.walk(filepath):
     for filename in filenames:
        kk=qrcode_recongnize(filepath,filename)
        print(filename,kk)


运行结果:

10064002865114446300320010019402.jpg ['qrcode']
10064002865147474800320010014524.jpg ['qrcode']
10064002865193399400320010025444.jpg ['qrcode']
10064002865201489200320010016199.jpg ['qrcode']
10064002865201508800320010029686.jpg ['qrcode']
10064002866745871400320010015155.jpg ['qrcode']
10064002917911190400320010025075.jpg ['unqrcode']
10064002918088242900320010011993.jpg ['qrcode']
10064002918093458900320010012496.jpg ['qrcode']
10064002918168035600320010029193.jpg ['qrcode']
20181206142636.png ['qrcode']

Process finished with exit code 0

识别了10个是二维码,有一个二维码识别错误。进过分析,那个未识别的二维码,并不是微信二维码。

而是一个网站的二维码。说明我们写的这个程序只能识别微信二维码,其他类型的二维码识别不了。后面再看看有没有别的方法。

识别二维码方法二:

# -*- coding: utf-8 -*-

from pyzbar.pyzbar import decode
from PIL import Image,ImageEnhance
import os


"""
图片包含二维码检测
"""
def qrcode_recongnize(filepath,filename):
    """
    :param filepath: 图片路径
    :param filename: 图片名字
    :return: qrcode 图片包含二维码,unqrcode 图片不包含二维码
    """
    image_type = []
    try:
        # 读取图片
        img = Image.open(filepath + filename).convert('RGB')
        # 增加亮度
        img = ImageEnhance.Brightness(img).enhance(1.0)
        # 锐利化
        img = ImageEnhance.Sharpness(img).enhance(1.5)
        # 增加对比度
        img = ImageEnhance.Contrast(img).enhance(2.0)
        # 灰度化
        img = img.convert('L')
        # 解码二维码
        result = decode(img)

        if len(result)>0:
            image_type.append('qrcode')

        else:
            image_type.append('unqrcode')
    except:
        image_type.append('unqrcode')
    return image_type



if __name__ == '__main__':

    filepath="F:/img_spam/test/"
    for parent,dirnames,filenames in os.walk(filepath):
     for filename in filenames:
        kk=qrcode_recongnize(filepath,filename)
        print(filename,kk)


评论 4
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

东华果汁哥

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值