zoukankan      html  css  js  c++  java
  • python 二维码识别包 pyzbar zxing使用简介

     

    一、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

     

     

     

  • 相关阅读:
    POJ 1469 COURSES 二分图最大匹配
    POJ 1325 Machine Schedule 二分图最大匹配
    USACO Humble Numbers DP?
    SGU 194 Reactor Cooling 带容量上下限制的网络流
    POJ 3084 Panic Room 求最小割
    ZOJ 2587 Unique Attack 判断最小割是否唯一
    Poj 1815 Friendship 枚举+求最小割
    POJ 3308 Paratroopers 最小点权覆盖 求最小割
    1227. Rally Championship
    Etaoin Shrdlu
  • 原文地址:https://www.cnblogs.com/tangdouguard/p/11251502.html
Copyright © 2011-2022 走看看