引子
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 BarCodeReaderreader = 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码的解码为例说明:
frompyzxingimportBarCodeReader
importcv2
importos
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,0,255,cv2.THRESH_BINARY|cv2.THRESH_OTSU)
se=cv2.getStructuringElement(cv2.MORPH_RECT,(3,3))
binary=cv2.erode(binary,se)
results=reader.decode_array(binary)
found=False
forresultinresults:
code_txt=result.get('parsed')
ifcode_txtisnotNone:
print("decodecontent:",code_txt)
print("codetype:",result.get('format'))
found=True



解码输出

原文标题:OpenCV+pyzxing实现条码解析
文章出处:【微信公众号:OpenCV学堂】欢迎添加关注!文章转载请注明出处。
审核编辑:汤梓红
-
函数
+关注
关注
3文章
4408浏览量
66905 -
python
+关注
关注
57文章
4859浏览量
89646 -
解码库
+关注
关注
0文章
3浏览量
6675
原文标题:OpenCV+pyzxing实现条码解析
文章出处:【微信号:CVSCHOOL,微信公众号:OpenCV学堂】欢迎添加关注!文章转载请注明出处。
发布评论请先 登录
没有专利的opencv-python 版本
Termux中调试圣诞树Python代码
开关电源测试流程方法合集
termux如何搭建python游戏
在Python中字符串逆序有几种方式,代码是什么
linux虚拟环境中调用Linux 版matlab编译的python库时出错
【VisionFive 2单板计算机试用体验】安装openplc
Hi3861 wifiiot_hispark_pegasus 按教程安装python3 -m pip install build/lite 报错
如何在虚拟环境中使用 Python,提升你的开发体验~
Python在嵌入式系统中的应用场景
使用Python实现xgboost教程
Flexus 云服务器 X:Python 安装的极致便捷之旅
华为云 Flexus X 实例下的场景体验——小企业使用 Python 语言——超迅速搭建简单公网 API 接口服务

Python中pyzxing安装与测试方法
评论