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

    文章

    4304

    浏览量

    62413
  • python
    +关注

    关注

    55

    文章

    4779

    浏览量

    84440
  • 解码库
    +关注

    关注

    0

    文章

    3

    浏览量

    6566

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

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

收藏 人收藏

    评论

    相关推荐

    家用断路器的安装方法

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

    使用Python进行Ping测试

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

    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 510次阅读
    <b class='flag-5'>Python</b>自动化<b class='flag-5'>测试</b>框架及其应用

    基于Python的地图绘制教程

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

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

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

    python运行环境的安装和配置

    Python是一种非常流行的编程语言,广泛应用于科学计算、Web开发、人工智能等领域。为了能够正常运行Python程序,我们需要先安装和配置Python运行环境。本文将为您详尽介绍
    的头像 发表于 11-29 16:17 1098次阅读

    查看python安装路径的方法

    方法一:使用Python自带安装程序的默认路径 Python安装程序通常会将Python
    的头像 发表于 11-29 14:54 1.1w次阅读

    python安装后idle在哪儿

    Python 是一种非常流行的编程语言,它使用简单且易于理解的语法,使得它成为初学者和专业开发人员的首选。Python安装非常简单,您只需在官方网站上下载适合您操作系统的安装包,然
    的头像 发表于 11-29 14:52 1147次阅读

    python shell怎么用

    Python Shell是一种交互式解释器,可以通过命令行直接运行Python代码。在Shell,可以输入一行代码并立即得到结果,非常适合于测试、尝试新代码或进行简单的任务。本文将详
    的头像 发表于 11-29 14:36 1098次阅读

    运行Python程序的几种常见方法

    : 使用Python解释器 Python解释器是运行Python程序的基本工具。在命令行输入 python 命令,即可启动解释器。然后输入
    的头像 发表于 11-28 15:32 2418次阅读

    python怎么运行程序

    Python是一种广泛使用的编程语言,它的简易和可读性使得它成为初学者和专业开发人员的首选。在运行Python程序之前,您需要安装Python解释器,然后按照以下步骤进行操作。 步骤1
    的头像 发表于 11-24 09:25 2488次阅读

    windows7可以安装python什么版本

    Windows 7可以安装多个Python版本,以下是适用于Windows 7的常见Python版本: Python 2.7:Python
    的头像 发表于 11-23 17:15 2.8w次阅读

    python嵌入包和安装程序的区别

    中。 在Python,有两种常见的方式来引入和使用第三方扩展功能,即嵌入包和安装程序。本文将详细介绍这两种方式的区别,以及何时应该选择使用哪种方式。 一、嵌入包 概述 嵌入包是将第三方库或框架的源代码直接拷贝到项目的源代码目录
    的头像 发表于 11-23 16:42 8906次阅读

    pythontext的用法

    Python的text是一个常见的数据类型,它用于存储和处理文本数据。在Python,文本常常被表示为字符串(string),字符串是一系列Unicode字符的有序序列。 在
    的头像 发表于 11-23 15:46 3353次阅读