0
  • 聊天消息
  • 系统消息
  • 评论与回复
登录后你可以
  • 下载海量资料
  • 学习在线课程
  • 观看技术视频
  • 写文章/发帖/加入社区
会员中心
创作中心

完善资料让更多小伙伴认识你,还能领取20积分哦,立即完善>

3天内不再提示

Python中pyzxing安装与测试方法

OpenCV学堂 来源:OpenCV学堂 作者:OpenCV学堂 2022-06-12 16:50 次阅读

引子

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运行测试如下:

fa9fe6c4-ea27-11ec-ba43-dac502259ad0.png

相关解码函数

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

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码的解码为例说明:
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

fad250a0-ea27-11ec-ba43-dac502259ad0.png

fb048f66-ea27-11ec-ba43-dac502259ad0.png

fb509e56-ea27-11ec-ba43-dac502259ad0.png

解码输出

fbfafe0a-ea27-11ec-ba43-dac502259ad0.png

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

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


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

    关注

    3

    文章

    4329

    浏览量

    62587
  • python
    +关注

    关注

    56

    文章

    4795

    浏览量

    84657
  • 解码库
    +关注

    关注

    0

    文章

    3

    浏览量

    6572

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

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

收藏 人收藏

    评论

    相关推荐

    Pythondict支持多个key的方法

    ​ 在Python,字典(dict)是一种非常强大的数据结构,它允许我们通过键(key)来存储和检索值(value)。有时候,我们可能想要根据多个键来检索或操作字典的数据。虽然Python
    的头像 发表于 11-29 15:59 152次阅读

    电脑是已经安装python2.7,为什么打开GUI的script window时,一直提示未找到python2.7?

    电脑是已经安装python2.7,为什么打开GUI的script window时,一直提示未找到python2.7?
    发表于 11-14 07:50

    家用断路器的安装方法

    家用断路器的安装是家庭电气安全的重要环节,其安装方法需要细致且准确,以确保电路的安全可靠运行。以下是对家用断路器安装方法的详细介绍,包括
    的头像 发表于 08-23 11:36 1054次阅读

    使用Python进行Ping测试

    在网络工程,Ping测试是一种常用的网络诊断工具,用于检查网络连接的可达性和响应时间。Ping测试通过向目标主机发送ICMP(Internet Control Message Protocol
    的头像 发表于 08-12 17:56 497次阅读
    使用<b class='flag-5'>Python</b>进行Ping<b class='flag-5'>测试</b>

    Python在AI的应用实例

    Python在人工智能(AI)领域的应用极为广泛且深入,从基础的数据处理、模型训练到高级的应用部署,Python都扮演着至关重要的角色。以下将详细探讨Python在AI的几个关键应用
    的头像 发表于 07-19 17:16 1079次阅读

    如何实现Python复制文件操作

    Python 中有许多“开盖即食”的模块(比如 os,subprocess 和 shutil)以支持文件 I/O 操作。在这篇文章,你将会看到一些用 Python 实现文件复制的特殊方法
    的头像 发表于 07-18 14:53 417次阅读

    基于Python的深度学习人脸识别方法

    基于Python的深度学习人脸识别方法是一个涉及多个技术领域的复杂话题,包括计算机视觉、深度学习、以及图像处理等。在这里,我将概述一个基本的流程,包括数据准备、模型选择、训练过程、以及测试与评估,并附上简单的代码示例。
    的头像 发表于 07-14 11:52 1258次阅读

    安装依赖的Python软件包时报错如何解决?

    安装依赖的 Python 软件包,出现了如下错误,请问如何解决,谢谢! Command \"E:/msys32/mingw32/bin/python2.7.exe E:/msys32
    发表于 06-26 07:32

    用离线安装安装的idf,其创建的Python虚拟环境无激活脚本是怎么回事?

    如题,用离线安装安装的idf,其创建的Python虚拟环境无激活脚本,具体如下图所示: 反而用vscode插件安装的idf有,如下图:vscode插件
    发表于 06-11 06:49

    python 学习:在内网 python库-numpy 安装方法,升级pip3版本的指令

    \\\\numpy-1.26.4-cp311-cp311-win_amd64.whl 内网升级pip 升级版本的指令: python.exe -m pip install --upgrade pip--proxy \"http://gateway.schneider.z
    发表于 04-22 17:18

    Python自动化测试框架及其应用

    Pytest是一个非常成熟的全功能的Python测试框架,与python自带的unittest测试框架类似,但是比unittest框架使用起来更简洁,功能更强大。
    的头像 发表于 04-03 16:15 551次阅读
    <b class='flag-5'>Python</b>自动化<b class='flag-5'>测试</b>框架及其应用

    基于Python的地图绘制教程

    本文将介绍通过Python绘制地形图的方法,所需第三方Python相关模块包括 rasterio、geopandas、cartopy 等,可通过 pip 等方式安装
    的头像 发表于 02-26 09:53 1203次阅读
    基于<b class='flag-5'>Python</b>的地图绘制教程

    如何使用linux下gdb来调试python程序

    如何使用linux下gdb来调试python程序  在Linux下,可以使用GDB(GNU调试器)来调试Python程序。GDB是一个强大的调试工具,可以帮助开发者诊断和修复程序的错误。在本文
    的头像 发表于 01-31 10:41 2612次阅读

    itop-RK3588开发板机器视觉开发OpenCV-Python安装

    itop-RK3588开发板机器视觉开发OpenCV-Python安装
    的头像 发表于 01-26 15:18 4174次阅读
    itop-RK3588开发板机器视觉开发OpenCV-<b class='flag-5'>Python</b>的<b class='flag-5'>安装</b>

    如何解决Python爬虫中文乱码问题?Python爬虫中文乱码的解决方法

    如何解决Python爬虫中文乱码问题?Python爬虫中文乱码的解决方法Python爬虫过程,遇到中文乱码问题是常见的情况。乱码问题主
    的头像 发表于 01-12 15:11 2372次阅读