条码检测系统——基于MATLAB的一维条码识别

摘  要:条码技术是如今应用最广泛的识别和输入技术之一,由于其包含的信息量大,识别错误率低而在各个方面得到很大的重视。它发展迅速并被广泛应用于于工业、商业、图书出版、医疗卫生等各行各业。由我国目前发展现状来看,条码的正常使用受到条形码印刷质量和商品运输过程的影响,并且传统的条码识读方式是采用光电识读器,条码图像对光的不同反射效果也必然会对条码的识读产生影响,而一般条码在搬运过程中条码会不可避免的破损,所以对质量较差的条码的条码的识别尤为重要。

不同的条码有着不同的识读过程。本设计研究一种基于图像处理方式的识读方法,通过计算机辨识来解决条码印刷质量不佳和条码变形等问题。该方法是采用摄像头采集条码图像,通过照相采集条码图像的方法避免了线性扫描器逐行扫描所产生的问题,同时简化了扫描条码图像的操作。然后通过一定的数字图像处理算法处理进行译码。译码算法主要分为两部分:第一部分首先对采集的条码图像进行预处理,图像的预处理包括图像分割,图像滤波等,良好的图像处理将对后面实现正确译码有重大贡献;第二部分就是对预处理后的条码图像进行译码,我们根据相似边距离来判别条码字符,再通过译码、校验、纠错处理来识读条码,得到条码所表示的文本信息。与用条码识读器硬件进行译码相比,软件译码具有更大的灵活性和较低的成本,所以具有很大的市场空间。借助于matlab软件的功能我们完成这次译码工作。

     关键词:图像处理 图像分割  条形码识别  EAN-13  相似边距识别    图像滤波Matlab

The System Of Bar-Code Examination

                              —— 1D Bar-Code recognition based on MATLAB

Abstract: Nowadays Bar-Code is a very popular technique ofidentification and input. It has been taken serious because of it’s large information and low error rate. It develops very quickly and has already been applied in industry,忽略merce,publishing,medical sanitation and so on. It can be seen from the actualities in our country that the use of Bar-Code is influenced by the printing quality and goods transportation, and besides, the traditional mode of recognition is using optical scanner so that the recognitinon will be consequentially affected by the different reflection of code image by the light. The general course of the removal barcode bar code will inevitably damage, so poor quality bar code bar code identification is particularly important.

      Different Bar-Code has different recognition process. This paper researches into a method based on digital image processing mode to resolve the problems of poor printing quality and code distortion, which uses the vidicon to take pictures of code images so as to avoid the traditional questions brought by the line-by-line scanning. And then applies the digital image processing algorithms to recognize the code, which includes two steps: the first is image pretreatments, the second is using statistic method and the distance of edge to similar edge method to recognize the code character. 忽略paring with decoding with special Bar-Code identification hardware, decoding with software is more flexible, and the cost is also 忽略paratively low. Hence, Bar-Code has a very clear future of development. This research is realized by Matlab.

Key word: image processing,  Bar-Code recognition,  EAN-13,  the distance of edge to similar edge,    image filters, Matlab

目   录

第1章 引言................................................................01

  1.1 条码技术概述.........................................................01

  1.2 Matlab应用图像处理...................................................02

  1.3本文的研究意义及内容..................................................03

            1.3.1 研究意义.................................................03

            1.3.2 研究内容及本文的组织安排.................................04

第2章 一维条码技术........................................................05

  2.1 一维条码的简介.......................................................05

  2.2 一维条码符号的结构...................................................05

  2.3 EAN码简述............................................................06

  2.4  EAN-13码符号的特征..................................................07

            2.4.1 EAN-13码字符集...........................................08

            2.4.2 EAN-13码符号结构.........................................09

  2.5  EAN-13码的校验纠错..................................................11

第3章 条码图像的预处理............................. ......................12

  3.1 图像分割理论.........................................................12

            3.1.1 图像分割的定义...........................................12

            3.1.2 图像分割的算法类.........................................13

            3.1.3 图像分割结果.............................................14

        3.2 图像灰度及二值化...............................................15        3.3 图像加噪仿真...........................................................16

        3.3 图像的滤波. ....................................................16

            3.3.1 图像的平滑滤波...........................................16

            3.3.2 形态学滤波...............................................17

第4章 条码的译码方法......................................................20

       4.1 译码方案的选择..................................................20

       4.2 相似边距法介绍..................................................21

       4.3. 条码字符的判别.................................................22

第5章 条码译码的基本原理..................................................25

       5.1 EAN_13的译码原理分析............................................25

5.2译码结果分析.....................................................26     第6章 结论................................................................28

参考文献...................................................................30

附录.......................................................................36

第1章  引 言

1.1 条码技术概述

     在信息时代的今天,计算机的应用己和我们的生活紧密地联系在一起。计算机快速准确的信息处理速度,给工农业生产、经营管理以及人们的日常生活等方面都带来了巨大的效益。可以说计算机的出现、普及和应用加速了社会发展进程。然而,在运用计算机进行信息处理时,面临的一个重要问题是如何提高信息输入速度问题,使之与计算机的高速运算能力相匹配。只有解决这个问题,才能发挥计算机高速处理信息的能力。因此,要求有一种简单、易行、廉价、高速的输入技术,条形码技术正是具备这一特征,因而它为世界各国所重视,并获得极大的发展。

条码技术是在计算机的应用实践中产生和发展起来的一种自动识别技术,条码应用技术就是应用条码系统进行的信息处理技术。条码技术的研究始于20世纪中期,是继计算机技术应用和发展应运而生的。随着70年代微处理器的问世,标志着“信息化社会”的到来,它要求人们对社会上各个领域的信息、数据实施正确、有效、及时的采集、传递和管理。因此如何代替人的视觉、人的手工操作、或者在复杂的环境中正确、迅速地获取信息并加以识别,成为人们普遍关心和有关人员精心研究的课题。

通俗的说条形码是指在浅色衬底上印有深色矩形的线条(也称条码)排列而成的编码,其码条和空白条的数量和宽度按一定的规则(标准)排列。条形码是由一组规则排列的条、空、相应的数字组成。这种用条、空组成的数据编码可以供机器识读,而且很容易译成二进制数和十进制数。这些条和空可以有各种不同的组合方法,构成不同的图形符号,即各种符号体系,适用于不同的应用场合。条码系统是由条码符号设计、制作及扫描阅读组成的自动识别系统。微电子技术和激光技术的发展使得条码识别系统越来越受到人们的关注。条码是迄今为止最经济、实用的一种自动识别技术。条码技术具有以下几个方面的优点:

1、可靠准确。有资料可查键盘输入平均每300个字符一个错误,而条码输入平均每15000个字符一个错误。如果加上校验位出错率是千万分之一。

2、数据输入速度快。  与键盘输入相比较,用条形码扫描读入电脑的速度大约是键盘输入的100倍,并且能够实现“即时数据输入”,一个每分钟打90个字的打字员1.6秒可输入12个字符或字符串,而使用条码,做同样的工作只需0.3秒,速度提高了5倍。  

3、经济便宜。与其它自动化识别技术相比较,推广应用条码技术,所需费用较低。

4、灵活、实用。条码符号作为一种识别手段可以单独使用,也可以和有关设备组成识别系统实现自动化识别,还可和其他控制设备联系起来实现整个系统的自动化管理。同时,在没有自动识别设备时,也可实现手工键盘输入。

5、自由度大。识别装置与条码标签相对位置的自由度要比OCR大得多。条码通常只在一维方向上表达信息,而同一条码上所表示的信息完全相同并且连续,这样即使是标签有部分缺欠,仍可以从正常部分输入正确的信息。

6、设备简单。条码符号识别设备的结构简单,操作容易,无需专门训练。

7、易于制作,可印刷,称作为“可印刷的计算机语言”。条码标签易于制作,对印刷技术设备和材料无特殊要求。

 证因为条码具有上述迅速,准确,廉价,使用方便,适应性强等优点,克服了其他输入方法的不足,所以他在各个行业中的发展可谓突飞猛进,最初应用于物流管理,最引人注目的是pos系统,它使商店的定货管理,盘点,库存管理,库存查询,验货管理,收款等各项工作得到极大地提高。目前已经应用到计算机自动化的各个领域,包括质量跟踪,仓储管理,物资管理,票证管理,人流物流管理,图书文献检索,医疗卫生,邮电系统,安全检查等领域。

1.2 Matlab应用图像处理

    Matlab图像处理工具是由Math Works公司推出的用于数值计算的有力工具,它具有相当强大的矩阵运算和操作功能,力求人们摆脱繁杂的程序代码。Matlab图像处理工具箱提供了丰富的图像处理函数,灵活运用这些函数可以完成大部分图像处理工作。可以分为图像处理概述、图像显示、图像运算、图像滤波、和二值形态学等方面。应用部分包括图像空间变换、图像增强、图像复原、图像编码、图像分析等。

图像处理工具包是由一系列支持图像处理操作的函数组成的。所支持的图像处理操作有:图像的几何操作、邻域和区域操作、图像变换、图像恢复与增强、线性滤波和滤波器设计、变换(DCT变换等) 、图像分析和统计、二值图像操作等。下面就MATLAB 在图像处理中各方面的应用分别进行介绍。主要包括下面几方面:

(1) 图像文件格式的读写和显示。MATLAB 提供了图像文件读入函数 imread(),用来读取如:bmp,tif、tiff、pcx 、jpg 、gpeg 、hdf、xwd等格式图像文;图像写出函数 imwrite() ,还有图像显示函数 image()、imshow()等等。

(2) 图像处理的基本运算。MATLAB 提供了图像的和、差等线性运算 ,以及卷积、相关、滤波等非线性算。例如,conv2(I,J)实现了I,J两幅图像的卷积。

(3) 图像变换。MATLAB 提供了一维和二维离散傅立叶变换(DFT) 、快速傅立叶变换(FFT) 、离散余弦变换 (DCT) 及其反变换函数,以及连续小波变换(CWT)、离散小波变换(DWT)及其反变换。

(4) 图像的分析和增强。针对图像的统计计算MATLAB 提供了校正、直方图均衡、中值滤波、对比度调整、自适应滤波等对图像进行的处理。

(5) 图像的数学形态学处理。针对二值图像,MATLAB 提供了数学形态学运算函数;蚀(Erode)、膨胀(Dilate)算子,以及在此基础上的开 (Open)、闭(Close)算子、厚化 (Thicken) 、薄化 (Thin) 算子等丰富的数学形态学运算。

1.3 本文的研究意义及内容

1.3.1 研究意义

条形码技术主要研究如何用条码标识信息、并将条形码表示的信息转换成计算机可识读的语言,以实现自动输入、自动识读、自动统计.在先进的工业国家里,条码技术作为一种信息处理技术己成为社会化产物,不仅应用于生产过程,而且也应用于管理过程。在我国条码技术起步比较晚,但它的发展非常迅速,己被广泛用于工业、商业、图书出版、医疗卫生等各行各业。随着全球经济贸易体系的形成,将被更广泛用于其它领域。现在,它已变成商品进入国际市场的通行证.但是,由我国目前发展现状来看,主要有两种因素影响条码正常使用。首先条形码在印刷中存在许多质量问题,据1998年4月桂林条码工作会议公布的数字表明,我国商品条码不合格率达20%--30%,使大量名牌产品、优质产品不能进入超级市场(POS商店)。条码印刷质量对其能否正常使用是至关重要的,质量低劣出现扫描误读,不仅造成不必要的经济损失,而且将大大影响了工作效率。其次,运输过程中造成的条码磨损、断裂和脏污是影响条码正确误读的另一个重要的因素。

目前,市场上普遍采用的条形码识读装置是光电识读器。由一般条码识读器的原理可知:条形码的宽窄和颜色的对比度都会对光的反射产生影响,不可避免的会影响到条码正确识读;此外,由于光电识读器采用线扫描方式,斑点、脏污和纸面断裂也会造成反射光的差异,相应的对条码识读也必然会产生影响。因此,一方面条码标准化工作需要大力加强;另一方面研制有一定的辨识能力的条码阅读装置具有十分重要的现实意义。条码图像辨识在一些特殊情况下将发挥着极大的优势。图像处理识读方法是首先对条码图像进行处理,然后利用统计方法,根据相似边距离来判别条码字符,再通过译码、校验、纠错处理来识读条码,这样将大大降低条码印刷质量以及条码污染等各种因素的干扰,从而有效地提高条码的识读率。

1.3.2 研究内容及本文的组织安排

自从20世纪70年代以来,由于数字计算机技术迅猛发展给图像处理技术提供了技术手段,图像处理技术被广泛应用于国民经济的各个部门,并逐步深入人们生活。到目前为止,通过各种信息检索,有关图像处理技术用于一维条形码识读方面的技术成果及参考资料还没有发现。尽管以前关于条码识读的设备很多,但都是针对光电处理而言的。因此,通过图像处理识别条码是一种新的尝试,而条码图像识读算法的研究正是在该情况下的理论探索,本文所研究的是基于图像处理方式的条码的识别工作,具体工作如下:

  1 研究印刷质量对条码的影响,通过辨别解决条码印刷质量不佳的问题。

  2 针对条码图像特点,确立相应的图像处理算法,对采集的条码图像进行预处理,该部分的算法包括对条码图像进行定位 分割,对图像除噪滤波等以有效提取条码图像信息,为后面实现正确译码做准备。

 3 通过计算机仿真的方法加入噪声,生成干扰图像,用此对图像预处理算法进行检索。

 4 对预处理的条码的图像进行译码,利用统计方法,归一化理论,根据相似边距来判别字符。

第二章 一维条码技术

2.1 一维条码简介

条码由一组规则排列的条,空及相应的字符组成。条码的信息靠条和空的不同宽度不同位置来传递的,信息量的大小事由条码的宽度和印刷的精度来决定的,条码越宽,包容的条和空越多,传递的信息量也越大,条码印刷的精度越高单位长度内可以容纳的条空也越多,传递的信息量也越大。这种用条空组成的数据编码很容易供机器识读,而且很容易已成二进制和十进制的数。

世界上约有225种以上的一维条码,每种一维条码都有自己的一套编码规格,规定每个字母(可能是文字或数字或文数字)是由几个线条(Bar)及几个空白(Space)组成,以及字母的排列。目前使用频率最高的几种一维条码码制有:EAN、UPC、三九码、交插二五码和EAN128码。其中UPC条码主要用于北美地区。EAN条码是国际通用符号体系,它们是一种定长、无含义的条码,主要用于商品标识。EAN128码是由国际物品编码协会和美国统一代码委员会联合开发、共同采用的一种特定的条码符号,它是一种连续型、非定长有含义的高密度代码,用以表示生产日期、批号、数量、规格、保质期、收货地等更多的商品信息。另有一些码制主要是适应于某种特殊场合,如库德巴码用于血库、图书馆、包裹等的跟踪管理;二五码用于包装、运输和国际航空系统为机票进行顺序编号。还有类似三九码的九三码,它的密度较高,可代替三九码。以上所说的都是一维条码,就是常说的传统条码。本文主要研究其中的EAN13码。

条码可分为一维条码 (One Dimensional Barcode, 1D) 和二维码(Two Dimensional Code, 2D)两大类,目前在商品上的应用仍以一维条码为主,故一维条码又被称为商品条码,二维码则是另一种渐受重视的条码,其功能较一维条码强,应用范围更加广泛。

2.2 一维条码符号的结构

通常任何一个完整的条码是由两侧空白区、起始符、数据字符、校验符、终止符组成,以一维条码而言,其排列方式通常如表2-1所示:

1、空白区

位于条码两侧无任何符号及资讯的白色区域,主要用来提示扫瞄器准备扫瞄。

2、起始符

指条码符号的第一位字码,用来标识一个条码符号的开始,扫瞄器确认此字码存在后开始处理扫瞄脉冲。

3、数据符

位于起始字符后面的字码,用来标识一个条码符号的具体数值,允许双向扫瞄。

4、校验符

用来判定此次阅读是否有效的字码,通常是一种算术运算的结果,扫瞄器读入条码进行解码时,先对读入各字码进行运算,如运算结果与检查码相同,则判定此次阅读有效。

2.3 EAN码简述

EAN码的全名为欧洲商品条码(European Article Number),源于公元1977年,由欧洲十二个工业国家所共同发展出来的一种条码。目前已成为一种国际性的条码系统。EAN条码系统的管理是由国际商品条码总会(International Article Numbering Association)负责各会员国的国家代表号码之分配与授权,再由各会员国的商品条码专责机构,对其国内的制造商、批发商、零售商等授予厂商代表号码。目前已有30多个国家加盟EAN。 

EAN码由前缀码、厂商识别码、商品项目代码和校验码组成。前缀码是国际EAN组织标识各会员组织的代码,我国为690、691和692;厂商代码是EAN编码组织在EAN分配的前缀码的基础上分配给厂商的代码;商品项目代码由厂商自行编码;校验码为了校验代码的正确性。在编制商品项目代码时,厂商必须遵守商品编码的基本原则:对同一商品项目的商品必须编制相同的商品项目代码;对不同的商品项目必须编制不同的商品项目代码。保证商品项目与其标识代码一一对应,即一个商品项目只有一个代码,一个代码只标识一个商品项目。

另外,图书和期刊作为特殊的商品也采用了EAN-13表示ISBN和ISSN。前缀977被用于期刊号ISSN图书号ISBN用978为前缀,我国被分配使用7开头的ISBN号,因此我国出版社出版的图书上的条码全部为9787开头。

EAN码具有以下特性: 

1.只能储存数字。

2.可双向扫描处理,即条码可由左至右或由右至左扫描。

3.必须有一检查码,以防读取资料的错误情形发生,位于EAN码中的最右边处。

4.具有左护线、中线及右护线,以分隔条码上的不同部分与截取适当的安全空间来处理。

5.条码长度一定,较欠缺弹性,但经由适当的管道,可使其通用于世界各国。

6.依结构的不同,可区分为:

EAN-13码:由13个数字组成,为EAN的标准编码型式。
         EAN- 8码:由8个数字组成,属EAN的简易编码型式。

2.4 EAN-13码符号的特征

(1)条码符号的整体形状为矩形。由一系列互相平行的条和空组成,四周都留有空白区。

(2)条空分别由1-4个同一宽度的的深或浅颜色的模块组成。深色模块用“1”表示,浅色模块用“0”表示。

(3)在条码符号中,表示数字的每个条码字符仅由两个条和两个空组成,共7个模块。

(4)除了表示数字的条码字符外,还有一些辅助条码字符,用作表示起始、终止的分界符和平分条码符号的中间分隔符。

(5)条码符号可设计成既可供固定式扫描器全向扫描,又可用手持扫描设备识读的形式。

(6)条码符号的大小可在放大系数的两个极限值所决定的尺寸之间变化,以适应不同印刷工艺的需求及用户对印刷面积的要求。

(7)对一个特定大小的条码符号所规定的尺寸称为名义尺寸,放大系数的范围0.8-2.0。

(8)供人识别的字符规定采用OCR-B字符。

左侧空白区:位于条码符号起始符左侧,无印刷符号且与空的颜色相同的区域。其最小宽度为11个模块宽。

起始符:位于条码符号左侧,表示信息开始的特殊符号,由3个模块组成。

左侧数据符:介于起始符和中间分隔符之间的表示信息的一组条码字符。表示前缀码(不包含前置码)和厂商代码,共6位数字。条码字符按A子集或B子集的形式构成。左侧数据符由42个模块组成。

中间分隔符:位于条码符号的中间位置,是平分条码符号的特殊符号,由5个模块组成。

右侧数据符:中间分隔符右侧的一组选自C子集的条码字符,表示5位商品代码,又35个模块组成。

校验符:最后一个条码字符,选自C子集,由7个模块组成,表示一个校验字符。

终止符:位于条码符号右侧,表示信息结束的特殊符号,由3个模块组成。

右侧空白区:在终止符之外的无印刷符号且与空的颜色相同的区域,其最小宽度为7个模块。

EAN-13条码符号所包含的模块总数为113个。EAN-13条码的前置码不用条码表示,也不包括在左侧数据符中。左侧数据符是根据前置码所决定的条码字符构成方式(奇排列和偶排列)来表示前置码之后的6位数字的。见表2-3。

表2-3 左侧数据符的奇偶排列规则

纵向值0-9:代表前置码数值;横向值12-7:代表代码位置序号,以“6901234567892”为例,其条码的左侧数据符的排列形式是由前置码6决定的。从表中可以知道排列规律是ABBBAA。

2.5 EAN-13码的校验纠错

校验码的主要作用是防止条码标志因印刷质量低劣或包装运输中引起标志破损而造成扫描设备误读信息而设置,作为确保商品条形码识读正确性的必要手段。条形码用户在标志设计完成后,代码的正确与否直接关系到用户的自身利益。对代码的验证,校验码的计算是标志商品质量检验的重要内容之一。下面是EAN-13码的校验码验算方法,步骤如下:|(1)将条形码中数字码由右至左位排序(包括校验码);

(2)从代码位置序号2开始,所有偶数位的数字代码求和为a;

(3)将上步中的a乘以3为a;

(4)从代码位置序号3开始,所有奇数位的数字代码求和为b;

(5)将a和b相加为s;

(6)取s的十进制个位数d,再由10减去d即为校验位数值C。

第三章 条码图像的预处理

3.1 图像分割理论

 3.1.1 图像分割的的定义

图像分割是数字图像处理领域一类非常重要的图像分析技术,在对图像的研究和应用中,根据不同领域的不同需要,在某一领域往往仅对原始图像中的某些部分(目标)感兴趣。这些目标区域一般来说都是具备自身特定的一些诸如灰度、纹理等,图像分割就主要根据图像在各个区域的不同特性,而对其进行边界或区域上的分割,并从中提取出所关心的目标。分别以图像的灰度、边界、形态学特征等为基础总结出图像分割的不同方法,清楚地介绍了各种不同分割方法的原理及数学基础,最后用MATLAB对不同的方法进行仿真实验。实验结果表明,不同的方法得到了不同的分割结果,并且没有一种通用的分割方法对所有的图像都能达到理想的效果。

条件①指出在对一幅图像的分割结果中全部子区域的总和(并集)应能包括图像中所有像素(就是原图像);条件②指出在分割结果中各个子区域是互不重叠的,或者说在分割结果中一个像素不能同时属于两个区域;条件③指出属于同一个区域中的像素应该具有某些相同特性;条件④指出在分割结果中属于不同区域的像素应该只有一些不同的特性;条件⑤要求分割结果中同一个子区域内的任意两个像素在该子区域内互相连通,或者说分割得到的区域是一个连通组元。

3.1.2图像分割算法

图像分割因其广泛的应用前景一直受到学术界和工程界的高度重视,围绕图像分割的理论相继被提出。目前已经发展到近千种不同类型的分割算法。按下类方式进行划分:

  1. 按分割原理分类

      从图像分割的定义不难看出,图像分割是基于相邻像素值方面的两个性质:不连续性和相似性。区域内部的像素一般具有某种相似性,而区域和边界之间具有某种不连续性。根据区域和边界的特点,图像分割可以简单的分为边缘检测和区域生长两大类,也可以将两者结合使用。从原理上分为三类:1.阈值分割2.边缘检测3区域提取。

     算法1基于这样假设,每个区域有许多灰度相近的像素构成,物体和背景之剑或其他物体之间有明显的差别,还可以通过取门限的方法将像素分成不同的区域。算法2首先检测出局部的不连续性,再将他们连成边界,这些边界把图像分成不同的区域。算法3是根据区域内部的均匀性而实现的分割,可以分为合并,分裂及分裂合并三种。

图像分割在本质上是找出空域像素与满足一定均一性的区域之间对应关系的过程。他得到的目标有两个形式:边缘和区域。边缘和区域。边缘和区域是互相对偶的因素,如果获得了准确的边缘,那么相应的区域也就可以方便地表示。如果得到有效地区域标记,那么边缘也就可以区域标记的基础上予以确定。

  1. 按分割过程中处理的策略分类

无论采用什么算法,最终都必须通过计算机的处理才能将图像分割出来。计算机的处理策略有并行和串行之分,结合图像分割的特点与计算机处理的策略将图像分割算法分为:1.并行分割处理2.串行边界分割3并行区域分割4串行区域分割。

  1. 按相关知识分类

在图像处理中,弧度,纹理,彩色,时变,噪声,立体,运动到呢个多维模式向量均是处理图像可以运用的知识。概括起来可以分为以下五类五种类型: 1.面向特征的过程2.已统计机理为中心的构造3.针对图像爱你过对象的新号表示4数据融合的多信息源集成5特定领域系统的方法。

综上,图像分割的算法非常多,但因为棋处理的对象差距很大,不能找到一个通用方法。所以具体问题具体分析,选择适当的方法进行分割目标。

第四章 条码的译码方法

4.1 译码方案的选择

方案一:宽度测量法

在图像方式的译码过程中,宽度的测量不再采用传统的脉冲测量法,而是通过记录每个条或空的宽度中所含象素的个数来确定实际的条/空宽度,从而确定整个条码符号所代表的信息。

方案二:平均值法

对条码符号图像中从起始符到终止符整个宽度进行测量,然后除以95(标准宽度),求出单位模块所含的像素列宽,再分别测量各个条空的实际宽度(此宽度以单位宽度为单位计算)

方案三:相似边距离的测量方法

这种方法的设计思路是通过对符号中相邻元素的相似边之间距离的测量来判别字符的逻辑值,而不是由各元素宽度的实际测量值来判别。

前两种方案对条码图像的要求非常高,因为它们都是测量各元素符号的实际宽度,然后根据查表法得到所代表的码值。如果实际测量值与标准值存在一点偏差,就不能实现正确译码。而第三种方案正是有效的解决了这一问题,因此我们采用相似边距离测量的方法来实现译码功能.下面就简要说明一下这一方法。

由原理知,要想辨识一个条码,必须先测量条码条、空宽度C1、C2、C3、C4以及一个字符的宽度T。条码图像经过预处理后得到的是二值图像,该点的颜色信息在阈值变换时已经定义,用255和0表示白和黑色。我们从条码的左边开始取点,若遇到点的灰度值由255变到0即由点的颜色由白色变为黑色,则表示检测到条,记录下该点的坐标值,如果点的颜色由黑色变为白色,则表示检测到空,记录下该点的坐标值。这样经过扫描后得到各个颜色变化点的坐标,然后将相邻两点的横坐标相减得到各个条、空的宽度.由前面所述EAN-13条码的组成知:一个由占3个条空的起始符、3个条空的终止符、24个条空的左侧数据符、5个条空的中间分隔符、20个条空的右侧数据符、4个条空的校验符组成。所以,整个条码字符占的条空总数为59,若条码字符没有发生几何畸变,一行扫描应记录的坐标数为60个;而对于有几何畸变的条码图像,例如条码污染、条码断裂、条码瑕疵等,该扫描行的坐标数将肯定大于60或小于60,这时将不记录该扫描行,对此行不处理。这样利用图像统计方法,逐行扫描图像,获取条码图像信息,比起只由一行获取信息的方式可靠性更高,这样即使个别噪声点存在并不影响图像信息的获取。

                           

4.2 相似边距法介绍

条码字符的判别—相似边距法:

理论上条形码字符的逻辑值应该由条形码的实际宽度来判断,而相似边距离方法的设计思想通过对符号中相邻元素的相似边之间距离的测量来判别字符的逻辑值,而不是由元素宽度的实际值来判别。此种方法的优点是:即使条码质量存在缺欠,使得实际测量值和条码应该具有的理论值有较大的偏差,仍然可以根据相似边的距离能够正确解释。什么是相似边距离?图3-4给出了相似边之间的距离,则图中t1, t2, t3, t4, t5, t6, t7(归一化值)为条形码相似边距离。本文采用归一化理论,用一种相似边距离归一化的方法对字符进行判别。该方法即使条码印刷质量有偏差,仍能正确对条码进行识读.

表4-2中可以看到条形码编码和归一化值在多数情况下呈现一一对应的关系,只要确定了归一化值就能确定字符值,但是有四种情况例外,在表3-3中知,左侧奇字符和右侧偶字符1,7归一化值均为44,左侧奇字符和右侧偶字符2,8归一化值均为33,左侧偶字符1,7归一化值均为34,左侧偶字符2,8归一化值均为43。这两种情况可以在判别字符时根据C1,C2,C3,C4进一步判别,根据它们条空宽度特点进行判别。有1728字符标准条空宽度值的特点知:对于左侧奇字符、右侧偶字符1和7可通过C3与C4作比较,C3>C4者为字符1,反之为7;对于左侧奇字符、右侧偶字符2和8可通过C2与C3作比较,C2>C3者为字符8,反之为2;对于左侧偶字符1和7可通过C1与C2作比较,C1>C2者为字符7,反之为1;对于左侧偶字符2和8可通过C2与C3作比较,C2>C3者为字符2,反之为8;

由上述条码字符识别理论可总结出相似边距离测量法的一般步骤。由条码宽度的计算我们得到了各个条、空的宽度(像素),并通过计算n=T/7,T=C1+C2+C3+C4得到单位模块的宽度(像素)。各个条空的宽度除以单位模块的宽度就是归一化的条空宽度。而为了方便译码,我们除去起始符3个条空,中间分隔符5个条空,终止符3个条空,对剩下的48个条空每4个条空为一组进行译码。计算相似边之间的距离t1、t2从而得到归一化(T1,T2)。最后查表可得条码字符。为检验译码的正确性利用校验位对码字进行校验。流程图

如图4-3。

3 条码字符的判别

如图4-4所示是EAN-13条码的一个字符。条、空宽度的定义如下:图中C1、C2、C3、C4表示每个字符中四个相邻条、空的宽度,T表示一个字符的宽度。

图4-4 EAN-13条码宽度的定义

 设一个字符中单位模块的宽度为n,则单位模块的宽度:

n=T/7

T=C1+C2+C3+C4

由于条码条、空宽度C1、C2、C3、C4已知,设条码条、空分别占单位模块的个数为mi,则:

mi=ci/n(其中i取1、2、3、4)

因此,由mi可知道条码的编码。例如:

(1)若m1=2、m2=2、m3=2、m4=1;

条码的排列为条-空-条-空,

则可知条码编码为1100110,是右侧偶性字符1;

(2)若m1=1、m2=2、m3=1、m4=3;

条码的排列为空-条-空-条,

则可知条码编码为0110111,是右侧奇性字符8。

第五章 条码的译码的基本原理

5.1 EAN-13的译码原理分析

由上一章可知,要辨别一个条码,必须知道条码的码,空间隔C1,C2,C3,C4和一个字符的宽度T.图像经过分割,灰度,二值化处理后得到就是关于条码的二值图像,把图像看作一个二维矩阵,矩阵中的点就是0和255表示白与黑。我们进行列扫描,对于每一列如果有大于大于二分之一行是0的话,判定这一列是0。最后我们得到的是一个一维矩阵,从而由这个一维矩阵,来做字符识别。我们检测这个一维矩阵,若遇到矩阵由0变到255,或是由255变到0,的话,记录下坐标值。然后由坐标值相减得到条空的宽度。由前面的EAN-13条码组成可知:一个条码由3个条空起始符,3个条空终止符,24个条空左侧数据区,5个条空的中间分隔符,20个右侧数据符,4个条空的校验码,所以扫描的坐标应该为60个,整个条空总数为59。字符判别流程图:扫描识别的流程图如下:

第六章  结论

在对条码图像作相应的图像预处理之后,对得到的二值条码图像利用上述条码识别算法在Matlab软件环境下编写了相应的软件程序。通过多次实验,识别效果很好,误码率低,大大提高了条码的识别率。相信对其它一维条码图像识别具有一定的理论及实践参考价值。

本次设计在译码方法上进行了比较选择,确定了相似边距离的测量方法的优越性。这种方法的设计思路是通过对符号中相邻元素的相似边之间距离的测量来判别字符的逻辑值,而不是由各元素宽度的实际测量来判别。对条码图像的要求相对其它方法而言较低,具有较高的识别率,因而能够很好的满足实际需要。同时用软件实现条码的识别比硬件具有更好的抗噪声性能,且速度快,效率高。

尽管如此,设计中也遇到了很多的问题有待进一步的解决和探索研究。图像处理是条码识别的重要基础。本设计只是对质量较好的条码图像进行一般性处理,但实际中的图像并都不是这么理想,例如条码污染、条码断裂、条码瑕疵等。这些需要进行特殊的图像处理过程才能达到译码的目的。如果条码被污染了我们要进行修复,条码发生几何畸变我们要进行图像矫正等等。只有考虑到更多的方面才能提高系统的性能和适应性,对一定质量范围内的条码图像都能进行有效的处理。其次,对软件程序的精简也是我所追求的,希望通过最精练的语句实现所需要的功能。程序中很多的语句还有进一步改进的空间,这样既能精简语句,使语句简明易懂,也能提高程序整体的执行速度,提高条码识别效率。

条码识别系统的测试和实验结果分析

我所做的设计包括图像处理,条码识别,图像处理是非常重要的一个环节,在这之中我运用到很多的图像分割的方法,主要用到阈值分割,高低帽图像增强分割,以及图像的腐蚀,膨胀等分割方法,每种分割方法都有其特点,对不同程度污染的条码的分割的效果不一样,其次过于条码识别的方法,利用的矩阵的列扫描扫出正确的条空,这种程序通俗易懂实现起来也比较简单,再条码译码部分主要是利用相似边距法来读取条空的编码,并译码。利用这个思路,用matlab编程能够实现对轻度污染的条码进行识别。下面图片为识别的处理的结果。

6-1  图像分割

6-2  条码的译码结果

 致谢语

在林老师的指导下,经过这学期的努力学习和工作按时按量地完成了我和毕业设计书写的工作。在老师指导下通过这一段时间的学习,不仅使我的学习能力和独立思考的能力得到了极大的提高,同时也让我认识到我在本专业的专业知识方面还有很多不清楚的地方。这也将对我以后的工作和学习产生有很大的帮助。

在此,特别感谢饶琴学姐,在设计中,她给了我很大的帮助,由于之前比较少使用Matlab来处理图像,对这个软件业比较陌生,所以刚开始出现很多低级错误,基本不懂错误分析、排查,使得问题的方法。在她的引导下,我渐渐地掌握了Matlab编程的方法,她的热情,才学,认真的态度将对我今后的工作,学习有很大的影响。做事讲究方法科学,做人讲究认真务实。

参考文献

[1]朱虹,数字图像处理基础[M],北京:科学出版社,2005。

[2] 董长虹 Matlab图像处理与应用北京:国防工业出版社,2004.1
[3]徐飞,MATLAB应用图像处理[M],西安:西安电子科技大学出版社,2002。

[4] 徐杰 数字图像处理武汉:华中科技大学出版社,2009.8
[5]朱秀昌、刘峰、胡栋,数字图像处理与图像通信[M],北京:北京邮电大学出版社,2002。

[6] 何东健 数字图像处理.西安:西安电子科技大学出版社,2003.7
[7] 费振原 条码技术及应用上海:上海科学技术文献出版社,1992.9
[8]刘志海,条形码技术及程序设计[M],重庆:重庆大学出版社,1991。

[9]王雅静,基于图像处理的EAN-13条码识别算法[J],山东理工大学学报(自然科学版),2005,第19卷(第4期):3-5。

[10]赵素霞,基于数字图像处理方式的EAN-13条码识读算法研究[C],山东:山东大学,2005,48-60。

附  录

附录一 英文参考资料原文及中译文

Study of Recognition for 1-D and 2-D Bar Code Images

Fan Yongfa  He Hongzhuang

(College of Mechanial and Electronic  Engineering,Hehai Univ,Changzhou 213022,China)

Abstract      The authors have studied the moment-invariants theory of pattern recognition,and 忽略bined the other image processing techniques,then developed a one-dimension bar code recognition system which can recognize not only the lightly polluted and in忽略pletele bar codes but also the distorted bar codes with arbitrarily angle.As a result ,the two-dimension recognition system had been developed and studied.

key words   Bar code Moment-invariant Image recognition Ellipse model

1  Introduction

1.      Bar code technology because of its fast and accurate, has fathom to every corner of the field of 忽略puter management. The traditional model of bar code information extraction is based on optical scanning technology, with digital image processing technology, in recent years digital camera images based on intake patterns and a corresponding decoding system.However, there have not been solved for arbitrary angles of distortion of the bar for literacy issues, this paper, code-128 bar code  example, a new technology program, which transformed during thresholding, moment by 忽略puting Center to determine the bar code of the 'elliptical angle'; 忽略bination of image and bar code information, adjust the bar code image to the level of success to solve the distortion at any angle bar code automatic identification of the problem.

2 . Technical programs and mathematical models.

2.1 Technical Programme

Code-128 bar code know a variable length of the continuous bar code as shown in Figure(1), it uses a set of parallel bars, spaces that start character, data character, testing character terminator and a blank area left and right sides.

The bar code image format to standard bitmap, and then can be turned into a binary image, and then find the bar code by the Moment of the relative position and angle, and then adjusted on the bar code image processing, the out忽略e can be scanned.

                   Figure(1)

3 .  one-dimensional bar code identification system integration and debugging

      One-dimensional bar code image recognition system is in VC + + environment to "Document - View" model integration. One CStandard code to achieve standardization of bar code formats, provides bar code type CStdcodeObject geometry of location information that is in the class of functions Myangle, class CCode VIiew threshold integrated image transformation, geometric transformation, noise reduction and other image processing functions. The system for any angle light pollution, distortion one-dimensional bar code, in less than a second to identify, meet the real-time applications.

4.  two-dimensional bar code identification systems technology program

     Based on code-128 as two-dimensional bar code by the superposition of multi-dimensional bar codes, two-dimensional bar code has inherited the results of one-dimensional bar code, but an increase of matrix separation module. The mechanism is two-dimensional bar code to achieve the level of cutting the number of image matrix, block matrix identification system program pairs one by one scanning, once read the initial character information, namely that the layer number and begin decoding of information, experience terminator when they jump to the next sub-block matrix scanning, sweeping up all over the matrix, in order to prevent loss of information on each bar is divided into two sub-matrices.

5.Two-dimensional bar code identification system design and debugging

Two-dimensional bar code identification system is also in VC + +6.0 environment in order to "document - view" model integration. One CStdDataObject barcode image is read and stored as an array matrix, then matrix partitioning, divided into sub-matrix; class CTwoB128Doc function with function number under the level of information circulating sub-block matrix.

    Two-dimensional system can be 忽略pared to 0.5 seconds on the second floor of a serious two-dimensional bar code image noise, correct identification. Two-dimensional bar code identification system has also improved, and only two single bar code for debugging

6. Conclusion

       Bar code printing and easy to use in忽略plete or pollution caused, image-based bar code recognition system developed to broaden the practical applications of the bar code; achieve automatic identification. The system also can be used in the field of robot automatically search for Engineering。

References:

1. Fan Yongfa, GUO Yan-ping, image processing and barcode recognition software development [M], a 忽略puter application [J], 2003, (2); 86 ~ 87;

2 . Zhang Ze, Wang Yao the ball, bar code technology and electronic data interchange [M], Beijing; China Railway Press, 1998.

3. Yun-De Jia machine vision [M], Beijing, Science Press, 2000.

4. Wang Xiaohong Rongchun A new method for image normalization, 忽略puter applications and software [J], 2002, (3); 51 ~ 57.

5.HE Hong Zhuang. Based on image recognition mode of bar code decoding system [D], Nanjing: Hohai University: [MA thesis] .2003.

中文翻译:

一维及二维条码图像识别系统研究

范永法 何红庄

(河海大学机电学院  常州 213022)

摘要   以矩不变为特征的模式识别理论为依据,结合其他数字图像处理技术,开发出不仅能对轻度污染与残缺的条码进行识读,而且能对任意角度有畸变的条码图像进行快速识别的系统。在此基础上,对二维条码图像的识别系统进行了开发研究。

关键词 条码 不变矩 图像识别 椭圆模型

  1. 引言

条码技术的应用因其快速准确,已参透到计算机管理领域的各个角落。条码信息提取的传统模式是基于光电扫描技术,随着数字图像处理技术的发展,近年来出现了基于数码相机的图像摄入模式,并出现了相应的译码系统。然而至今还没有解决对任意角度的畸变的条码进行识读的问题,本文以code-128条码为例,提出了一种全新的技术方案,即在进行阈值处理变换后,通过计算中心矩,确定条码的‘椭圆倾角’;结合图像及条码有关信息,调整条码图像至水平,成功的解决了任意角度畸变条码的自动识别问题。

  1. 技术方案及数学模型

2.1  技术方案

     Code-128条码识一种可变长度的连续型条码如图一所示,它用一组平行的条,空表示起始符,数据符,检验符终止符及左右侧空白区。

     将条码图像的格式转换为标准位图,进而可化为二值图,然后经矩计算求出条码的相对位置和倾斜角度,再对条码图像进行调整处理,即可扫描得出结果。

一秒内识别,符合实时应用的要求。

4  二维条码识别的系统技术方案

   由于基于code-128的二维条码由多层一维条码叠加而成,二维条码继承了一维条码的成果,但增加了矩阵分隔模块。其实现机理是将二维条码图像水平模切为多个子矩阵,识别系统程序对子块矩阵逐个扫描分析,一旦读到起始符信息,即提出层号信息并开始译码,遇到终止符时便跳转到下一个子块矩阵扫描,直到扫遍所有的子矩阵,为防止信息丢失每层条码分成两个子矩阵。

  1. 二维条码识别系统设计及调试

     二维条码识别系统同样是在VC++6.0环境下以“文档-视图”模式集成。其中CStdDataObject是将条码图像读取并储存为数组矩阵,然后进行矩阵分割,划分成子矩阵;类CTwoB128Doc设有功能函数根据层号信息循环子块矩阵。

     二维系统可以在0.5秒内对比较严重的噪声二层二维条码图像正确识别。二维条码识别系统还在改进完善,仅对两个单层条码进行调试

6  结束语

   条码在印刷及使用中易造成残缺或污染,基于图像的条码识别系统的研制,拓宽了条码的实际应用领域;实现了自动识别。该系统还可以应用于机器人自动寻刀系统工程领域。

  参考文献:

1  范水法,郭艳萍,条码图像处理及识别软件开发[M],计算机应用研究[J],2003,(2);86~87;

2  张泽,王耀球,条码技术与电子数据交换[M],北京;中国铁道出版社,1998。

3  贾云得  机器视觉[M],北京,科学出版社,2000。

4  王晓红 赵荣椿  图像规格化的一种新方法,计算机应用与软件[J],2002,(3);51~57.

5   何红庄.基于图像识别模式的条码译码系统的研究[D],南京:河海大学:[硕士论文].2003。

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.mzph.cn/pingmian/57542.shtml

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

攻坚金融关键业务系统,OceanBase亮相2024金融科技大会

10月15-16日,第六届中新数字金融应用博览会与2024金融科技大会(简称“金博会”)在苏州工业园区联合举办。此次大会融合了国家级重要金融科技资源——“中国金融科技大会”,围绕“赋能金融高质量发展,金融科技创新前行”…

【C++指南】运算符重载详解

引言 C 提供了运算符重载这一特性,允许程序员为自定义类型(如类和结构体)定义运算符的行为。 通过运算符重载,可以使自定义类型对象像内置类型一样使用运算符,从而提高代码的可读性和易用性。 本文将详细介绍 C 中运算…

【状态机DP】力扣2786. 访问数组中的位置使分数最大

给你一个下标从 0 开始的整数数组 nums 和一个正整数 x 。 你 一开始 在数组的位置 0 处&#xff0c;你可以按照下述规则访问数组中的其他位置&#xff1a; 如果你当前在位置 i &#xff0c;那么你可以移动到满足 i < j 的 任意 位置 j 。 对于你访问的位置 i &#xff0c…

若依微服务15 - RuoYi-Vue3 实现前端独立运行

正文开始&#xff1a; RuoYi-Vue3 使用 Vue3 Element Plus Vite 技术栈。 GitHub 开源地址&#xff1a;https://github.com/yangzongzhuan/RuoYi-Vue3 本文介绍使用若依提供的在线后端接口&#xff0c;仅启动前端项目并进行界面开发&#xff0c;而无需启动后端服务。 一、克隆…

AI视听新体验!浙大阿里提出视频到音乐生成模型MuVi:可解决语义对齐和节奏同步问题

MuVi旨在解决视频到音乐生成(V2M)中的语义对齐和节奏同步问题。 MuVi通过专门设计的视觉适配器分析视频内容,以提取上下文 和时间相关的特征,这些特征用于生成与视频的情感、主题及其节奏和节拍相匹配的音乐。MuVi在音频质量和时间同步方面表现优于现有基线方法,并展示了其在风…

C++:模板的特化与分离编译

之前我们在介绍模板的时候仅仅是简单的介绍了模板的用法&#xff0c;本篇文章我们来详细的介绍下模板中比较重要的几个点。 一&#xff0c;非类型模板参数 我们之前的c中&#xff0c;会将经常使用的而又确保在我们程序的运行过程中值不会改变的值进行#define&#xff1a; #d…

初入编程之路,启航代码海

#1024程序员节|征文# 前言 今天又是1024程序员节了&#xff0c;第一次听说这个节日是在我在23年刚刚上大一的时候听学长他们说的&#xff0c;如今已经是24年了&#xff0c;虽然只学习了一年的编程但我已经了解到了这条路上的不易。希望能够在这条路上面一路坚持下去&#xff0…

力扣_斐波那契数列

本题目本质和爬楼梯是一样的&#xff0c;主要运用的是递归来解题。 class Solution:my_dict {}def fib(self, n: int) -> int:if self.my_dict.get(n) is not None: # 先判断有没有计算过这个值return self.my_dict.get(n)tempResult 0if n > 2:tempResult self.fib…

075_基于springboot的万里学院摄影社团管理系统

目录 系统展示 开发背景 代码实现 项目案例 获取源码 博主介绍&#xff1a;CodeMentor毕业设计领航者、全网关注者30W群落&#xff0c;InfoQ特邀专栏作家、技术博客领航者、InfoQ新星培育计划导师、Web开发领域杰出贡献者&#xff0c;博客领航之星、开发者头条/腾讯云/AW…

MySql中使用findInSet和collection实践

FIND_IN_SET 需求如下&#xff1a;有张用户表&#xff0c;表里有个字段叫school&#xff0c;意为这个用户上过哪些学校&#xff0c;数据库里存的就是字符串类型&#xff0c;存的值类似"2,5,12"&#xff0c;要求就是查询出上过id为2的学校有哪些用户 解决方法&#x…

【JAVA毕设】基于JAVA的酒店管理系统

一、项目介绍 本系统前端框架采用了比较流行的渐进式JavaScript框架Vue.js。使用Vue-Router实现动态路由&#xff0c;Ajax实现前后端通信&#xff0c;Element-plus组件库使页面快速成型。后端部分&#xff1a;采用SpringBoot作为开发框架&#xff0c;同时集成MyBatis、Redis、…

qt生成uuid,转成int。ai回答亲测可以

// 生成一个随机的UUID QUuid uuid QUuid::createUuid(); // 将UUID转换为字符串 QString uuidStr uuid.toString(QUuid::WithoutBraces);// 计算MD5哈希值 QByteArray hash QCryptographicHash::hash(uuidStr.toUtf8(), QCryptographicHash::Md5);// 提取前8个字节并转换为…

云曦10月13日awd复现

一、防御 1、改用户密码 passwd <user> 2、改数据库密码 进入数据库 mysql -uroot -proot 改密码 update mysql.user set passwordpassword(新密码) where userroot; 查看用户信息密码 select host,user,password from mysql.user; 改配置文件&#xff0c;将密码改为自己…

电脑技巧:Rufus——最佳USB启动盘制作工具指南

目录 一、功能强大&#xff0c;兼容性广泛 二、界面友好&#xff0c;操作简便 三、快速高效&#xff0c;高度可定制 四、安全可靠&#xff0c;社区活跃 在日常的电脑使用中&#xff0c;无论是为了安装操作系统、修复系统故障还是进行其他需要可引导媒体的任务&#xff0c;拥…

使用 Python结合随机User-Agent与代理池进行网络请求

1. 引言 在爬虫开发过程中&#xff0c;为了模拟真实的用户行为&#xff0c;避免被目标网站识别并封锁&#xff0c;通常需要使用随机的User-Agent以及代理IP来发送网络请求。本文将介绍如何通过Python实现这一功能&#xff0c;包括设置随机User-Agent、读取代理列表&#xff0c…

web网页

HTML代码&#xff1a; <!DOCTYPE html> <html lang"en"> <head><meta charset"UTF-8"><meta name"viewport" content"widthdevice-width, initial-scale1.0"><title>wyy</title><!-- 引…

VSCODE c++不能自动补全的问题

最近安装了vscode&#xff0c;配置了C/C扩展&#xff0c;也按照网上说的配置了头文件路径 我发现有部分头文件是没办法解析的&#xff0c;只要包含这些头文件中的一个或者多个&#xff0c;就没有代码高亮和代码自动补全了&#xff0c;确定路径配置是没问题的&#xff0c;因为鼠…

Linux笔记之文件查找和搜索命令which,find,locate,whereis总结

Linux笔记之文件查找和搜索命令which,find,locate,whereis总结 code review! 文章目录 Linux笔记之文件查找和搜索命令which,find,locate,whereis总结1.对比2.whereis 和 which 命令区别3.locate 和 find 命令区别 1.对比 命令功能说明备注which常用于查找可直接执行的命令。…

基于ssm的萌宠商城管理系统【附源码】

基于ssm的萌宠宜家商城系统&#xff08;源码L文说明文档&#xff09; 目录 4 系统设计 4.1 系统概述 4.2 系统概要设计 4.3 系统功能结构设计 4.4 数据库设计 4.4.1 数据库E-R图设计 4.4.2 数据库表结构设计 5 系统实现 5.1 管理员功能介绍 …

【C++中的lambda表达式】

不需要借口&#xff0c;爱淡了就放手....................................................................................................... 文章目录 前言 一、【lambda表达式介绍】 1、【lamda表达式的概念】 2、【lamda表达式的语法】 二、【lambda表达式的使用】…