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

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

需要安装库

pip install pyzbar 
pip install opencv-python

我们 先准备些二维码

【python 图片识别】python识别图片是不是包含二维码_第1张图片

总共有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)


你可能感兴趣的:(数据科学--机器学习)