一维条形码检测与识别原理是什么_一维条码的识别原理

一维条形码检测与识别原理是什么_一维条码的识别原理近期在学习的内容之中的一个,整理一下,图片均为网络图片。提及的条形码主要为EAN-13码。一、概念条形码由宽度不同、反射率不同的条(黑色)和空(白色)组成。依照特定的编码规则编制,用来表达一组数字

大家好,又见面了,我是你们的朋友全栈君。如果您正在找激活码,请点击查看最新教程,关注关注公众号 “全栈程序员社区” 获取激活教程,可能之前旧版本教程已经失效.最新Idea2022.1教程亲测有效,一键激活。

Jetbrains全系列IDE使用 1年只要46元 售后保障 童叟无欺

近期在学习的内容之中的一个,整理一下,图片均为网络图片。提及的条形码主要为EAN-13码。

一、概念

条形码由宽度不同、反射率不同的条(黑色)和空(白色)组成。依照特定的编码规则编制,用来表达一组数字、字母信息的图形标识符。

工业25码
这里写图片描写叙述
EAN-13码
这里写图片描写叙述
为什么用黑色、白色来表示条形码?
由于两种颜色有截然不同的反射率,众所周知。黑色吸收光中的全部颜色,白色反射光中的全部颜色。当然。也能够用其它两种颜色来表示条形码,仅仅要两种颜色有不同的反射率。足够的对照度。

二、EAN-13码

EAN-13码是EAN码的一种。用13个字符表示信息,是我国主要採取的编码标准。EAN-13码包括商品的名称、型号、生存厂商、全部国家地区等等信息。
EAN码是模块组合型条码。

模块:组成条码的基本宽度单位。说白了。条形码上,每0.33毫米宽代表一个模块。

一个模块宽的条(条形码黑色部分)表示二进制“1”,两个模块宽的条(黑)表示二进制“11“。一个模块宽的空(条形码白色部分)表示二进制”0“。
这样。便能够用二进制的0、1表示信息。

在EAN码上,每一个字符(比如:数字1)。由两个条(黑)和两个空(白)组成,条和空又分别由1~4个同宽、同颜色的模块组成。每一个字符总共同拥有7个模块(宽),并规定每一个字符从外观上包括两个条、两个空。

所以EAN码又称(7,2)码。
一个字符:c1表示条的宽度(模块),c2(空)。c3(条)。c4(空) (c1+c2+c3+c4=7)
这里写图片描写叙述
EAN-13码的格式如图:
这里写图片描写叙述
以上节EAN-13码例图来说明:
501(制造码),2345(制造商代码)。67890商品标识代码,0(校验码)。
注意:EAN-13码,在以图形标识符表示时。第1位(例:上图数字”5“)隐式表示。既不用条和空(表示)。而用第2位~第7位(总六位)的奇偶性来隐式表示(后面会说)。

如今,第一位用隐式表示,那么仅仅须要表示13-1=12个字符。将12个字符,分成两半,左側6个字符。右側6个字符。
左側字符有奇偶性,右側字符全是偶的。左側的奇偶性取决于 隐式表示的第一位字符(前置符,即:EAN-13码格式中的F1)。

详细奇偶性如图:E代表偶数位,O代表奇数位,如前置符0表示,左側六个字符都是奇数位。
这里写图片描写叙述
那么奇、偶数位有什么用呢?
同样字符在偶数位、和奇数位的二进制表示是不一样的。如图:
这里写图片描写叙述

校验码有什么用?
EAN-13码最后一个字符是校验码,用来保证条形码识别的正确性。
EAN-13码校验算法例如以下:
(1)从右至左,将13个字符按顺序排序。
(2)第2、4、6、8、10、12等偶数位的数据相加,将结果乘以3,得P.
(3)将3、5、7、9、11、13等奇数位数据相加,等N。

(4)N+P得 M
(5)用M除以10,取余数。求余数以10为模的补数 C。
(6)若C与 校验码 数值相等,则译码正确。

EAN-13码识别原理

这里写图片描写叙述
如图,表示条形码的一个字符。
C1。C2。C3,C4表示该字符中四个相邻的条(黑)或空(白)的宽度。T是一个字符的宽度。

C1+C2+C3+C4=7(模块)
用n表示一个模块的宽度,n=T/7。
用mi=Ci/n,i=1,2,3,4,便能够得到编码。
若m1=1。m2=3。m3=1,m4=2,且条码排列位条——空——条——空,则当前字符二进制编码为 1 000 1 00,是右側偶字符“7”。
这样的方法仅仅是最主要的识别方法,当条空间距较小,或印刷质量不好时,非常easy识别错误。
条形码识别的方法还有很多,网上有很多资料,有兴趣的朋友能够自行学习。

版权声明:本文内容由互联网用户自发贡献,该文观点仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请联系我们举报,一经查实,本站将立刻删除。

发布者:全栈程序员-站长,转载请注明出处:https://javaforall.net/167894.html原文链接:https://javaforall.net

(0)
全栈程序员-站长的头像全栈程序员-站长


相关推荐

  • Jmeter接口测试实例讲解

    Jmeter接口测试实例讲解一 测试需求描述 1 本次测试的接口为 http 服务端接口 2 接口的主要分成两类 一类提供给查询功能接口 一类提供保存数据功能接口 这里我们举例 2 个保存数据的接口 因为这两个接口有关联性 比较有代表性 3 接口描述 保存信用卡账户信息接口 传入参数 args clientNo

    2025年9月16日
    0
  • Python上位机软件图形界面实战(2)[通俗易懂]

    Python上位机软件图形界面实战(2)[通俗易懂]前言上位机图形界面开发设计用QTDesigner就可以了。但是qtdesigner生成的是.ui文件,我们需要将.ui转换为我们用的py文件。这里就要用到昨天设置Pyuic来生成。由于只是初步开发所以设计的界面没有美化,只是体验一下功能就可以了。1Pyuic的修改今天做的时候才发现昨天的Pyuic没设置好。下来在昨天的基础上只修改这两行。-mPyQt5.uic.pyuic$F…

    2022年5月29日
    51
  • 浅谈UML的概念和模型之UML九种图

    浅谈UML的概念和模型之UML九种图

    2021年11月16日
    44
  • 一步一步教学《虚拟化工程师实战培训》让想学者学得更容易。

    一步一步教学《虚拟化工程师实战培训》让想学者学得更容易。一步一步教学《虚拟化工程师实战培训》让想学者学得更容易。

    2022年4月20日
    45
  • MySQL默认隔离级别是RR,但是为什么一些大厂会改成RC?

    MySQL默认隔离级别是RR,但是为什么一些大厂会改成RC?为什么默认隔离级别是RR?可能大部分人都只知道MySQL的隔离级别有4个,分别是RU读未提交、RC读已提交、RR可重复读和Serializable可串行化,很少有人知道MySQL默认的隔离级别是RR,Oracle默认的隔离级别是RC。那就更少有人知道为什么MySQL默认的隔离级别是RR了。我也是刚刚工作之余看到了一篇文章,里面简单提了一下这个问题,我就四处找寻了一下答案,将自己所理解的记录下来,希望对大家有帮助。理解脏读、不可重复读、幻读脏读:某个事务对一份数据执行了更新操作,另一个事务在此时读

    2025年8月31日
    8
  • em算法在高斯混合模型中的应用_高斯分布概率计算公式

    em算法在高斯混合模型中的应用_高斯分布概率计算公式一个例子高斯混合模型(GaussianMixedModel)指的是多个高斯分布函数的线性组合,理论上GMM可以拟合出任意类型的分布,通常用于解决同一集合下的数据包含多个不同的分布的情况(或者是同一类分布但参数不一样,或者是不同类型的分布,比如正态分布和伯努利分布)。如图1,图中的点在我们看来明显分成两个聚类。这两个聚类中的点分别通过两个不同的正态分布随机生成而来。但是如果没有GMM,那么只能用一

    2022年10月21日
    3

发表回复

您的邮箱地址不会被公开。 必填项已用 * 标注

关注全栈程序员社区公众号