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

    文章

    4408

    浏览量

    66905
  • python
    +关注

    关注

    57

    文章

    4859

    浏览量

    89646
  • 解码库
    +关注

    关注

    0

    文章

    3

    浏览量

    6675

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

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

收藏 人收藏
加入交流群
微信小助手二维码

扫码添加小助手

加入工程师交流群

    评论

    相关推荐
    热点推荐

    没有专利的opencv-python 版本

    所有 官方发布的 opencv-python 核心版本(无 contrib 扩展)都无专利风险——专利问题仅存在于 opencv-contrib-python 扩展模块的少数算法(如早期 SIFT
    发表于 12-13 12:37

    Termux调试圣诞树Python代码

    在Termux调试Python代码(以圣诞树立例)非常简单,核心分为环境准备、代码编写、运行调试三个步骤,下面一步步教你操作: 一、环境准备(首次使用需做) Termux默认可能没有Python
    发表于 12-09 09:02

    开关电源测试流程方法合集

    开关电源作为电子行业中最为常见的电源类型,其应用领域十分广泛,作为电源模块测试系统的专业供应商,纳米软件接触的用户,有很大一部的客户需要我们为其提供开关电源的测试流程和方法,作为其自
    的头像 发表于 10-31 09:36 815次阅读
    开关电源<b class='flag-5'>测试</b>流程<b class='flag-5'>方法</b>合集

    MA35-RTT如何安装 Python 和 Libusb (Windows) ?

    MA35-RTT:如何安装 Python 和 Libusb (Windows) ?
    发表于 09-03 08:30

    termux如何搭建python游戏

    Pygame),确保已安装`clang`编译器:`apt install -y clang` 3. 权限问题:若需访问手机文件,安装`termux-setup-storage`并授权存储访问权限。 通过以上步骤,即可在Termux
    发表于 08-29 07:06

    Python字符串逆序有几种方式,代码是什么

    对于一个给定的字符串,逆序输出,这个任务对于python来说是一种很简单的操作,毕竟强大的列表和字符串处理的一些列函数足以应付这些问题 了,今天总结了一下python对于字符串的逆序输出的几种常用
    的头像 发表于 08-28 14:44 797次阅读

    linux虚拟环境调用Linux 版matlab编译的python库时出错

    、readme.txt、 requiredMCRProducts.txt、init.py、CAO_python.ctf。 在linux环境按照以下步骤安装matlab runtime2018b: ① cd到MCR
    发表于 07-18 10:40

    【VisionFive 2单板计算机试用体验】安装openplc

    官网看到开发板可以安装测试openplc,下面来体验下openplc功能。 一、安装软件 1.1、安装软件包 root@starfive:~# sudo apt-get install
    发表于 07-15 23:30

    Hi3861 wifiiot_hispark_pegasus 按教程安装python3 -m pip install build/lite 报错

    问题1: 报错: 问题2: 我安装网上搜的方法执行 python3 -m pip install --user ohos-build==0.4.3 hb -v [OHOS INFO] hb
    发表于 06-14 16:48

    ​如何在虚拟环境中使用 Python,提升你的开发体验~

    RaspberryPiOS预装了Python,你需要使用其虚拟环境来安装包。今天出版的最新一期《TheMagPi》杂志刊登了我们文档负责人NateContino撰写的一篇实用教程,帮助你入门
    的头像 发表于 03-25 09:34 645次阅读
    ​如何在虚拟环境中使用 <b class='flag-5'>Python</b>,提升你的开发体验~

    Python在嵌入式系统的应用场景

    你想把你的职业生涯提升到一个新的水平?Python在嵌入式系统中正在成为一股不可缺少的新力量。尽管传统上嵌入式开发更多地依赖于C和C++语言,Python的优势在于其简洁的语法、丰富的库和快速的开发周期,这使得它在某些嵌入式场景中非常有用,以下是
    的头像 发表于 03-19 14:10 1230次阅读

    使用Python实现xgboost教程

    使用Python实现XGBoost模型通常涉及以下几个步骤:数据准备、模型训练、模型评估和模型预测。以下是一个详细的教程,指导你如何在Python中使用XGBoost。 1. 安装XGBoost
    的头像 发表于 01-19 11:21 2255次阅读

    Flexus 云服务器 X:Python 安装的极致便捷之旅

    前言         Python 作为一种高级编程语言,因其简洁易读的语法和强大的库支持,在数据科学、人工智能、Web 开发等领域得到了广泛应用。然而,不同平台上的安装过程可能会有所不同,尤其是在
    的头像 发表于 01-07 17:00 558次阅读
    Flexus 云服务器 X:<b class='flag-5'>Python</b> <b class='flag-5'>安装</b>的极致便捷之旅

    华为云 Flexus X 实例下的场景体验——小企业使用 Python 语言——超迅速搭建简单公网 API 接口服务

    ,希望本文可以对小企业来说有一定的帮助作用。 目录 前言 环境说明 连接并安装 Python 环境 Python Web 接口编码 上传 WebAPI 接口代码 安装 flask
    的头像 发表于 12-27 13:46 876次阅读
    华为云 Flexus X 实例下的场景体验——小企业使用 <b class='flag-5'>Python</b> 语言——超迅速搭建简单公网 API 接口服务

    Triton编译器安装步骤详解

    必要的依赖: sudo apt-get updatesudo apt-get install build-essential cmake python3 python3-dev 对于 Windows(使用 WSL): 在 WSL
    的头像 发表于 12-24 17:35 4669次阅读