Python中pyzxing安装与测试方法

描述

 

 

引子

Python中有几个开源的条码解析库,之前我测试过pyzbar、libdmx这些库,发现都是个锤子,主要是功能太弱了,解码能力堪忧,之前我用ZXING C++版本写过一很好用的条码跟二维码的解码库,于是我搜索一下看看是否有Python版本的ZXING,发现真有就是pyzxing,但是需要注意的是,它不是基于ZXing C++的,它是通过Python调用Java的依赖实现解码的,而且默认是支持hard模型跟旋转模式解码的。

pyzxing安装与测试

  •  
https://pypi.org/project/pyzxing/

pyzxing在python下安装特别简单,只需要一条命令行执行:

  •  
pip install pyzxing

 

但是它其实是依赖OpenJDK才能运行的,推荐最好安装1.8版本,下载地址如下:

  •  
https://www.oracle.com/java/technologies/downloads/#jdk18-windows

 

安装好之后,cmd运行测试如下:

函数

 

相关解码函数

相关功能与函数说明可以直接访问这个页面:

  •  
https://pypi.org/project/pyzxing/

 

它支持三种输入

  •  
  •  
  •  
-直接输入图像文件名,然后解码-使用opencv-python读取图像,输入numpy数据解码-使用目录通配符,支持一次多张解码操作

 

相关函数演示代码如下:

  •  
  •  
  •  
  •  
  •  
  •  
  •  
  •  
  •  
  •  
  •  
from pyzxing import BarCodeReader
reader = BarCodeReader()results = reader.decode('/PATH/TO/FILE')# Or file pattern for multiple filesresults = reader.decode('/PATH/TO/FILES/*.png')print(results)# Or a numpy array# Requires additional installation of opencv# pip install opencv-pythonresults = reader.decode_array(img)

 

OpenCV-Python解码开发演示

 

在实际使用ZXING的解码中,首先需要做的就是各种图像预处理,因为多数工业喷码的图像质量都很一般,直接ZXING解码一次成功率大概只有50%左右,都需要通过各种预处理之后输入到ZXING二次解码,二次解码成功率会提升到95%左右,这个时候需要针对那些特别难的码进行更深度的预处理跟重新裁剪然后三次解码,总的三次解码成功率可以达到99%左右。这个里面涉及特别多解码细节问题。这里以最简单的几个工业常见的DataMatrix码的解码为例说明:
from pyzxing import BarCodeReader
import cv2
import os

code_roi = cv2.imread(os.path.join(test_dir, f), cv2.IMREAD_GRAYSCALE)
cv2.bitwise_not(code_roi, code_roi)
ret, binary = cv2.threshold(code_roi, 0255, cv2.THRESH_BINARY | cv2.THRESH_OTSU)
se = cv2.getStructuringElement(cv2.MORPH_RECT, (33))
binary = cv2.erode(binary, se)
results = reader.decode_array(binary)
found = False
for result in results:
    code_txt = result.get('parsed')
    if code_txt is not None:
        print("decode content: ", code_txt)
        print("code type: ", result.get('format'))
        found = True
 

函数

 

函数

 

函数

 

解码输出

函数

 

 

原文标题:OpenCV+pyzxing实现条码解析

文章出处:【微信公众号:OpenCV学堂】欢迎添加关注!文章转载请注明出处。


审核编辑:汤梓红
打开APP阅读更多精彩内容
声明:本文内容及配图由入驻作者撰写或者入驻合作网站授权转载。文章观点仅代表作者本人,不代表电子发烧友网立场。文章及其配图仅供工程师学习之用,如有内容侵权或者其他违规问题,请联系本站处理。 举报投诉

全部0条评论

快来发表一下你的评论吧 !

×
20
完善资料,
赚取积分