引子
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码的解码为例说明:from pyzxing import barcodereaderimport cv2import oscode_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 = falsefor 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学堂】欢迎添加关注!文章转载请注明出处。
苹果13什么时候上市什么配置
静态时序分析基础知识
科隆新能源提升研发实力,为我国绿色低碳发展贡献力量
解析VR前景,为何VR的春天迟迟不来?
工业富联独角兽光环退散,工业互联网之路漫漫且修远
Python中pyzxing安装与测试方法
电脑主板电池没电引起的故障检查修理_提示CMOS电池电量不足怎么办
为什么说华为云CDN更值得选择?
连接器端子压接:看似简单,其实其中有门道……
海关对一批申报出口的涉嫌侵权集成电路进行立案调查
瓦克总裁预估:多晶硅价格下滑趋势不可避免
USB Type-C和USB 3.1两者如何区分
基于DPI-C接口的UVM验证平台设计与实现介绍
极海APM32A车规级MCU获评第二届知鼎奖-智能电动汽车科技创新奖「芯片」
相比PCRAM、eMVM,MRAM有何优势
什么是4K变倍镜头?4K镜头有什么作用?
NVIDIA DRIVE拥有方向盘
便携式农药残留检测仪的作用原理是怎样的
2017年医疗健康八大趋势预测:可穿戴设备有待转型
消费能力并不等于收入能力 穷人用苹果富人用华为