精华内容
下载资源
问答
  • 一、Python二维码识别包的使用详情 在python二维码识别,目前主要有三个模块:zbar 、zbarlight、zxing。 未使用zbarlight,原因是zbarlight和zbar的dll相同,二维码识别准去率没提升。另外,该包的pip安装...

     

    一、Python下二维码识别包的使用详情

    在python下二维码识别,目前主要有三个模块:zbar 、zbarlight、zxing。

    未使用zbarlight,原因是zbarlight和zbar的dll相同,二维码识别准去率没提升。另外,该包的pip安装存在一些问题未解决。

     

    1、安装包:

    pip install opencv-python

    pip install pillow image zxing

    pip install pyzbar

     

    2、 安装使用包过程中遇到的问题:

    A、使用zxing是,出现“FileNotFoundError: [WinError 2”

    解决办法:安装java(jdk、jre都可以)。原因是zxing要调用一些java文件,要求java文件可被执行。

    B、安装zbarlight出现“Microsoft Visual C++ 14.0 is required.”

    解决办法:放弃。 原因:安装完vc_redist.x86后,还是会报相关的错误。

    4、 使用详情

    Pyzbar和zxing识别4张包含二维码的图片(图片如下),目前都只识别出来了前两张。微信(支付宝)扫一扫,4张都可以识别出来

     

    pyzbar相关代码:

     

    import pyzbar.pyzbar as pyzbar
    from PIL import Image, ImageEnhance
    
    
    def zabr_parser(image):
        img = Image.open(image)
        # 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')#灰度化
        img = img.convert("1")
        img.show()
    
        barcodes = pyzbar.decode(img)
        for barcode in barcodes:
            barcodeData = barcode.data.decode("utf-8")
            print(barcodeData)

    zxing相关代码:

     1 from PIL import Image
     2 import zxing  # 导入解析包
     3 
     4 
     5 def ocr_qrcode_zxing(filename):
     6     img = Image.open(filename)
     7     zx = zxing.BarCodeReader()  # 调用zxing二维码读取包
     8     data = ''
     9     zxdata = zx.decode(filename)  # 图片解码
    10     return zxdata.parsed  # 返回记录的内容

     

    4、使用的图片

     

     

     

     

     

    二、对比:

    1、zbar和zbarlight内核一致,都是基于zbar的dll编译加载的。zbarlight使用比zbar更简单,不过是在zbar的基础又做了封装,增加易用性,二维码识别准确率没有提高。

    2、zxing是基于java的zxing核心的python分支,其原理是调用javaw 加载zxing的core.jar包,再获取输出结果。

    3、微信和支付宝的扫一扫功能较python的这三个包强大很多,是有自己的算法(微信扫一扫使用了zxing,应该做了一定的修改。参考https://my.oschina.net/yushulx/blog/495471)

     

     

    参考文档:https://www.php.cn/python-tutorials-373780.html

     

     

     

     

    转载于:https://www.cnblogs.com/tangdouguard/p/11251502.html

    展开全文
  • 最近接触到一些需求需要进行二维码识别并且显示出链接地址,找了许多发现有的要么写的很啰嗦,看的云里雾里。也有其他的教程显示的并不是打印出链接,经过一山又一城的搜索,哈哈哈哈哈,然后就发现其实可以这么简单...

    最近接触到一些需求需要进行二维码识别并且显示出链接地址,找了许多发现有的要么写的很啰嗦,看的云里雾里。也有其他的教程显示的并不是打印出链接,经过一山又一城的搜索,哈哈哈哈哈,然后就发现其实可以这么简单直接地识别二维码。

    import pyzbar.pyzbar as pyzbar
    import cv2
    
    imagePath = "C:/Users/Administrator/Desktop/qrcode_zhuanlan.zhihu.com.png"
    # 这当然是打开图片啦
    srcImg = cv2.imread(imagePath)
    # 然后解码
    barcodes = pyzbar.decode(srcImg)
    for barcode in barcodes:
        print('二维码中包含的信息:', barcode)
        # 获取其中data对应的信息
        barcodeData = barcode.data.decode("utf-8")
        print("二维码链接:", barcodeData)
    

    输出为:

    二维码中包含的信息: Decoded(data=b'https://zhuanlan.zhihu.com/p/77663804', type='QRCODE', rect=Rect(left=1, top=1, width=368, height=368), polygon=[Point(x=1, y=1), Point(x=1, y=368), Point(x=369, y=369), Point(x=368, y=1)])
    二维码链接: https://zhuanlan.zhihu.com/p/77663804
    
    展开全文
  • 关于二维码主要有三个python模块:zbar 、zbarlight、zxing。其识别效果与速度。其他人说的很明白,我这里不再阐述。【请点击】 zxing开源地址:https://github.com/zxing/zxing/ 安装依赖: pip install -i ...


    二维码重构效果:(重构不一定很准,考虑到二维码的自我校正功能,识别率能有所提升)
    在这里插入图片描述

    一、二维码识别

    关于二维码主要有三个python模块:zbar 、zbarlight、zxing。其识别效果与速度。其他人说的很明白,我这里不再阐述。【请点击】

    zxing开源地址:https://github.com/zxing/zxing/

    安装依赖:
    pip install -i https://pypi.tuna.tsinghua.edu.cn/simple opencv-python
    pip install -i https://pypi.tuna.tsinghua.edu.cn/simple pillow image zxing
    pip install -i https://pypi.tuna.tsinghua.edu.cn/simple pyzbar

    关于安装zbar报错:无法打开包括文件: “zbar.h”: No such file or directory 【参考文章】
    解决方法:

    1. 下载【zbar-xxx-setup.exe】
    2. 安装时要勾选Development Headers and Libraries
    3. 配置PATHINCLUDELIB环境变量: D:\xxx\ZBar下的这三个文件路径。
    4. 下载源码,修改setup.py文件的libraries = [ 'zbar' ]改为 libraries = [ 'libzbar-0' ]编译安装。

    代码演示:

    # -*-coding=utf-8-*-
    import os
    import logging
    import time
    import zxing
    import random
    import pyzbar.pyzbar as pyzbar
    from PIL import Image, ImageEnhance
    
    
    
    logger = logging.getLogger(__name__)
    if not logger.handlers: logging.basicConfig(level=logging.INFO)
    DEBUG = (logging.getLevelName(logger.getEffectiveLevel()) == 'DEBUG')
    
    
    
    def zabr_parser(image):
        img = Image.open(image)
        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')#灰度化
        img = img.convert("1")
        img.show()
    
        barcodes = pyzbar.decode(img)
        for barcode in barcodes:
            barcodeData = barcode.data.decode("utf-8")
            print("barcodeData:",barcodeData)
    
    
    def ocr_qrcode_zxing(filename):
        # 在当前目录生成临时文件,规避java的路径问题
        img = Image.open(filename)
        print("[img]",img)
        ran = int(random.random() * 100000)
        img.save('%s%s.jpg' % (os.path.basename(filename).split('.')[0], ran))
        zx = zxing.BarCodeReader()
        data = ''
        zxdata = zx.decode('%s%s.jpg' % (os.path.basename(filename).split('.')[0], ran))
        # 删除临时文件
        os.remove('%s%s.jpg' % (os.path.basename(filename).split('.')[0], ran))
        if zxdata:
            data = zxdata.parsed
        else:
            img.save('%s-zxing.jpg' % filename)
        return data
    
    
    if __name__ == '__main__':
        filename = "./src/images/649108-20190726165817876-2057682885.jpg"
        t0 = time.time()
        zabr_parser(filename)
    
        t1 = time.time()
        ltext = ocr_qrcode_zxing(filename)
    
        t2 = time.time()
        logger.info(u'[%s]Zxing二维码识别:[%s]!!!' % (filename, ltext))
        print("zabr_parser time is",t1-t0)
        print("ocr_qrcode_zxing time is",t2-t1)
        print(ltext)
    
    """
    zabr_parser time is 0.059691667556762695
    ocr_qrcode_zxing time is 0.5909879207611084
    """
    

    无论如何我们希望多一点识别出来,但是也会在速度与识别率上取得平衡,具体情形看业务场景和需要识别二维码的质量。

    中文报错问题解决:
    找到python3安装路径下的zxing包,进去在init修改源码,将barcode函数中的decode(),加上“gkb”。

    测试图片(取自于【文章】):
    在这里插入图片描述

    增值税发票二维码解码内容说明
    关于二维码信息:【发票开票信息】
    识别二维码数据串:01,04,033001800104, 17027572, 255.66, 20180815, 57059471913515394462, 1D27

    解析如下:
    01:未清楚含义
    04:代表发票种类代码,10-增值税电子普通发票,04-增值税普通发票,01-增值税专用发票;
    033001800104:发票代码
    17027572:发票号码
    255.66:金额(不含税)
    20180815:开票日期
    57059471913515394462:校验码
    1D27, CRC码

    二 、发票二维码扫描增强

    关于设定HSV颜色范围:【HSV颜色空间】
    关于提取二维码:【特定颜色HSV提取】
    在这里插入图片描述

    非常感谢博主【稀饭老鼠】提供的处理思路与算法代码:

    1. 提取ROI区域,并将ROI图像转换成一个正方形(图像预处理)
    2. 根据定位图形和坐标点信息建立坐标系(图像坐标系构建)
    3. 根据坐标系切割图像,并提取每一个单元格中的数据信息,根据提取的数据信息,重构一个标准的二维码图像 (数据读取和重构)

    【01】问题分析:https://www.cnblogs.com/mousezhou/p/9243528.html
    【02】算法概述:https://www.cnblogs.com/mousezhou/p/9256524.html
    【03】图像预处理
       ROI 获取:https://www.cnblogs.com/mousezhou/p/9256627.html
       图像拉伸:https://www.cnblogs.com/mousezhou/p/9258165.html
       图片旋正:https://www.cnblogs.com/mousezhou/p/9259119.html
    【04】图像坐标系构建 https://www.cnblogs.com/mousezhou/p/9259518.html
    【05】构建目标二维码 https://www.cnblogs.com/mousezhou/p/9260523.html
    【06】图像再优化增强 https://www.cnblogs.com/mousezhou/p/9261165.html

    三、微信开源二维码技术

    开源二维码检测识别增强技术:
    安装:pip install opencv-contrib-python -i https://pypi.tuna.tsinghua.edu.cn/simple
    或者升级:pip install opencv-contrib-python -i https://pypi.tuna.tsinghua.edu.cn/simple --upgrade

    使用文档:https://docs.opencv.org/master/d5/d04/classcv_1_1wechat__qrcode_1_1WeChatQRCode.html

    示例:

    import cv2
    
    detector = cv2.wechat_qrcode_WeChatQRCode("detect.prototxt", "detect.caffemodel", "sr.prototxt", "sr.caffemodel")
    img = cv2.imread("img.jpg")
    res, points = detector.detectAndDecode(img)
    
    print(res, points)
    

    微信扫码引擎收录于:opencv_contrib/modules/wechat_qrcode
    微信扫码引擎是一款基于开源引擎ZXing,并高度优化和深度改造的高性能轻量二维码识别器。

    3.1. 基于CNN的二维码检测
    “一图多码”是扫码支付经常遇到的线下场景。早在2016年,微信扫码引擎在业内率先支持远距离二维码检测、自动调焦定位、多码检测识别。然而,传统方法需要牺牲40%以上的性能来支持多码的检测与识别。伴随着深度学习技术的成熟和移动端计算能力的提升,微信扫码引擎引入基于CNN的二维码检测器解决上述问题。
    图片
    图1 二维码检测器

    我们以SSD框架为基础,构造了短小精干的二维码检测器(图1),采用残差连接(Residual Concat)、深度卷积(Depthwise Convolution)、空洞卷积(Dilated Convolution)、卷积投影(Convolution Projection)等技术进行了针对性的优化。整个模型大小仅94****3KB,iPhone7(A10)单CPU的推理时间仅需20ms,很好地满足“低延时、小体积、高召回”的业务需求。

    检测代码:https://github.com/opencv/opencv_contrib/blob/master/modules/wechat_qrcode/src/wechat_qrcode.cpp#L156
    模型文件:https://github.com/WeChatCV/opencv_3rdparty/blob/wechat_qrcode/detect.prototxt
    参数文件:https://github.com/WeChatCV/opencv_3rdparty/blob/wechat_qrcode/detect.caffemodel

    3.2. 基于CNN的二维码增强

    大图小码”是远距扫码和长按识码经常面临的难点,二维码增强技术可以让小码更加清晰。2014年,微信率先在对话中上线“识别图中二维码”能力,离不开增强技术的加持。在长按识别的场景中,二维码图像经过用户的裁剪、压缩、转发,图像质量严重受损,分辨率急剧下降,边缘变得模糊不清,这给扫码引擎的识别带来了极大的挑战。

    传统图像增强算法很难完美地解决以上问题,因此微信扫码引擎率先在识别流程中引入了基于深度学习的超分辨率技术(图2)。在网络结构上,密集连接(Dense Concat)、深度卷积(Depthwise Convolution)、反向卷积(Deconvolution)、残差学习(Residual Learning)等技术改善模型的性能;在目标函数上,针对二维码强边缘和二值化的特点,结合L2/L1损失、边界加权、二值约束设计了针对二维码的目标函数。经过精心的调优,超分辨率模型大小仅23KB,在iPhone7(A10)单CPU的推理时间仅需6ms(100x100超分200x200),完全满足移动端的应用需求。

    图片
    图2 二维码超分辨率

    超分代码:https://github.com/opencv/opencv_contrib/blob/master/modules/wechat_qrcode/src/wechat_qrcode.cpp#L68
    模型文件:https://github.com/WeChatCV/opencv_3rdparty/blob/wechat_qrcode/sr.prototxt
    参数文件:https://github.com/WeChatCV/opencv_3rdparty/blob/wechat_qrcode/sr.caffemodel

    3.3. 更鲁棒的定位点检测
    二维码在识别的时候,通常需要根据扫描像素行/列匹配对应比例来寻找定位点(图3)。
    图片
    图3 二维码定位点

    在定位点检测上,我们提出面积法的定位点检测方法,相比于传统扫描线方法更为鲁棒和高效,有效地避免了误召回和漏召回;在定位点匹配上,特征聚类方法使得扫码引擎可以高效和准确地匹配多个定位点;在图像二值化上,引入多种更为鲁棒的二值化方法,有效地提高解码的成功率。
    核心代码:https://github.com/opencv/opencv_contrib/blob/master/modules/wechat_qrcode/src/wechat_qrcode.cpp#L117

    展开全文
  • python 二维码识别扫描

    千次阅读 2018-07-15 10:53:20
    python3centos7 上zbarlight 使用的问题yum install zbar zbar-develimport requests from PIL import Image import zbarlight pic = "... img = Image....

    python3

    centos7 上zbarlight 使用的问题

    yum install zbar zbar-devel

    pip3 install zbarlight

    正常安装完之后,在实际的pip3 list列表中却显示的是 UNKNOWN 库,下面的程序也无法正常运行

    import requests
    from PIL import Image
    import zbarlight
    
    pic = "https://butu2.oss-cn-beijing.aliyuncs.com/bank/20180714213736.png"
    img = Image.open(requests.get(pic, stream=True).raw)
    code_message = zbarlight.scan_codes('qrcode', img)[0].decode()
    print(code_message)
    出现的问题

    AttributeError: module 'zbarlight' has no attribute 'scan_codes'
    

    解决办法:

    主要原因 setuptools 的版本太低 需要升级 setuptools

    如果之前安装了先卸载 :

    pip3 uninstall UNKNOWN

    然后:

    pip3 install setuptools --upgrade

    展开全文
  • 主要介绍了Python二维码生成识别实例详解,文中通过示例代码介绍的非常详细,对大家的学习或者工作具有一定的参考学习价值,需要的朋友可以参考下
  • python 摄像头二维码识别
  • 网上转了一圈发现都是识别二维码保存到本地,比较少直接打印在终端上,看了下qrcode-terminal虽然可以,但是发现它也是使用qrcode这个库,而qrcode已经有了输出到终端的方法了,所以就不用多下载qrcode-terminal了. ...
  • Python二维码应用(一)QRcode二维码生成&识别

    万次阅读 多人点赞 2019-01-05 20:35:39
    基于Python二维码实验一、机器视觉之QRcode二、基于Python的QRcodetest(一)配置环境(二)生成自己的二维码(三)识别二维码三、调用opencv库摄像头识别图像 一、机器视觉之QRcode 问:什么是QRcode呢? 答...
  • 树莓派python实现二维码识别——ZBar

    千次阅读 2019-05-15 21:56:26
    硬件由树莓派3Bplus和usb摄像头组成,软件由python二维码识别开源工具zbar和opencv组成。通过本文,可以学习如何正确快速安装zbar及快速上手zbar二维码识别,同时可采用opencv对二维码快速定位,实现二维码的快速...
  • 此代码是基于二维码识别python代码,将视频中的二维码识别的数据进行解析,并在屏幕上面打印出来,并解析成为坐标的形式,最后由于要控制步进电机进行相应的操作,因此在解析挖成之后并把坐标转换成为数控编码的...
  • 1. 项目背景 在OA系统的相关流程中,经常需要对用户提供的增值...本文基于window环境下的python3.6,使用python的opencv库来实现二维码的定位与识别。 2.引入相关库 ;本文使用的库主要有cv2、numpy、math,在引入前请安
  • 最近项目中用到二维码图片识别,在python二维码识别,目前主要有三个模块:zbar 、zbarlight、zxing。 1、三个模块的用法: #-*-coding=utf-8-*- import os import logging import zbar from PIL import...
  • 利用Opencv+Python 实现二维码识别

    千次阅读 2020-04-20 13:29:23
    准备工作: 二维码图片,我这里直接打印在了一张A4纸上,或者直接在草料网站上生成 草料二维码生成器,存放在手机上进行显示。在安装条码扫描库的时候大家注意:zbar库...利用摄像头识别二维码中的内容并打印出来,...
  • OpenCV+Python二维码条形码识别

    千次阅读 2019-05-31 19:42:32
    环境:Pycharm 、...简版代码识别度高,但是直接使用库函数没有任何意义,但是很实用: import cv2 import pyzbar.pyzbar as pyzbar def decodeDisplay(image): barcodes = pyzbar.decode(image) fo...
  • 基于ZBar,OpenCV和Python二维码识别

    千次阅读 2019-04-25 21:40:39
    0 前言 今天分享一个之前做过的二维码识别,参考:https://www.pyimagesearch.com/2018/05/21/an-opencv-barcode-and-qr-code-scanner-with-zbar/ 上面那个只有Python版本,再推荐一个C++版本的: ...

空空如也

空空如也

1 2 3 4 5 ... 20
收藏数 2,526
精华内容 1,010
关键字:

python二维码识别

python 订阅