高密度一维码解码方法、装置及计算机设备与流程

文档序号:32945494发布日期:2023-01-14 10:40阅读:112来源:国知局
高密度一维码解码方法、装置及计算机设备与流程

1.本技术涉及图像识别技术领域,尤其涉及一种高密度一维码解码方法、装置及计算机设备。


背景技术:

2.一维码已在很多领域得到了广泛应用,如工业、运输行业、商品零售业等领域都应用到一维码(如条形码为一维码中的一种)。当具体应用一维码时,最重要的步骤是对一维码进行解码。传统的一维码解码算法为依次通过边缘提取、语义分割、定位到一维码的位置、再通过图像二值化,分割出黑色像素区域和白色像素区域、转化为二进制数字及再匹配为字符串的过程处理,从而实现一维码解码。
3.但是现有的一维码解码算法对一维码的图片完整度要求较高,当一维码的密度较大,且出现一维码破损或者模糊的情况时,会导致一维码解码的成功率较低。


技术实现要素:

4.本技术实施例提供了一种高密度一维码解码方法、装置及计算机设备,旨在解决现有技术中对一维码的图片完整度要求较高,当一维码的密度较大,且出现一维码破损或者模糊的情况,会导致无法成功对一维码解码的问题。
5.第一方面,本技术实施例提供了一种高密度一维码解码方法,其包括:
6.获取待识别图片中的一维码图片,其中,所述一维码图片包括一维码和至少一个字符串;
7.对所述一维码图片进行解码,若确定对所述一维码图片中的一维码解码失败,则获取所述至少一个字符串中的每个字符串;
8.针对得到的各字符串,将所述字符串基于所获取的字符识别模型进行识别,得到所述字符串对应的识别结果;
9.在得到的各识别结果中获取与所述一维码的码制相匹配的识别结果,以作为一维码解码结果。
10.第二方面,本技术实施例提供了一种高密度一维码解码装置,其包括:
11.一维码图片获取模块,用于获取待识别图片中的一维码图片,其中,所述一维码图片包括一维码和至少一个字符串;
12.字符串获取模块,用于对所述一维码图片进行解码,若确定对所述一维码图片中的一维码解码失败,则获取所述至少一个字符串中的每个字符串;
13.字符串识别模块,用于针对得到的各字符串,将所述字符串基于所获取的字符识别模型进行识别,得到所述字符串对应的识别结果;
14.解码结果获取模块,用于在得到的各识别结果中获取与所述一维码的码制相匹配的识别结果,以作为一维码解码结果。
15.第三方面,本技术实施例又提供了一种计算机设备,其包括存储器、处理器及存储
在所述存储器上并可在所述处理器上运行的计算机程序,所述处理器执行所述计算机程序时实现上述第一方面所述的高密度一维码解码方法。
16.第四方面,本技术实施例又提供了一种高密度一维码解码系统,其包如上述第三方面所述的计算机设备,还包括拍摄设备,所述拍摄设备与所述计算机设备通讯连接;所述拍摄设备用于采集待识别图片并发送至所述计算机设备;所述计算机设备用于实现上述第一方面所述的高密度一维码解码方法。
17.第五方面,本技术实施例还提供了一种计算机可读存储介质,其中所述计算机可读存储介质存储有计算机程序,所述计算机程序当被处理器执行时使所述处理器执行上述第一方面所述的高密度一维码解码方法。
18.本技术实施例提供了一种高密度一维码解码方法、装置及计算机设备,先在一维码图片中所包括的一维码未被成功识别时获取其所包括的所有字符串,然后对所有字符串基于字符识别模型对各字符串进行识别得到识别结果,最后从得到的各识别结果中获取到与所述一维码的码制相匹配的识别结果以作为一维码解码结果。本技术实现了在一维码图片中因一维码未直接成功解码时,借助对位于一维码周围的各字符串进行字符串解码及一维码码制匹配而获取到与一维码对应目标字符串的识别结果,以该识别结果作为一维码的解码结果,提高一维码的解码成功率。
附图说明
19.为了更清楚地说明本技术实施例技术方案,下面将对实施例描述中所需要使用的附图作简单地介绍,显而易见地,下面描述中的附图是本技术的一些实施例,对于本领域普通技术人员来讲,在不付出创造性劳动的前提下,还可以根据这些附图获得其他的附图。
20.图1为本技术实施例提供的高密度一维码解码方法的应用场景示意图;
21.图2为本技术实施例提供的高密度一维码解码方法的流程示意图;
22.图3为本技术实施例提供的高密度一维码解码方法的子流程示意图;
23.图4为本技术实施例提供的高密度一维码解码方法中一维码图片的示意图;
24.图5a为本技术实施例提供的高密度一维码解码方法中字符串对应的区域图片的示意图;
25.图5b为本技术实施例提供的高密度一维码解码方法中字符串对应的二值化后区域图片的示意图;
26.图6为本技术实施例提供的高密度一维码解码装置的示意性框图;
27.图7为本技术实施例提供的计算机设备的示意性框图。
具体实施方式
28.下面将结合本技术实施例中的附图,对本技术实施例中的技术方案进行清楚、完整地描述,显然,所描述的实施例是本技术一部分实施例,而不是全部的实施例。基于本技术中的实施例,本领域普通技术人员在没有做出创造性劳动前提下所获得的所有其他实施例,都属于本技术保护的范围。
29.应当理解,当在本说明书和所附权利要求书中使用时,术语“包括”和“包含”指示所描述特征、整体、步骤、操作、元素和/或组件的存在,但并不排除一个或多个其它特征、整
体、步骤、操作、元素、组件和/或其集合的存在或添加。
30.还应当理解,在此本技术说明书中所使用的术语仅仅是出于描述特定实施例的目的而并不意在限制本技术。如在本技术说明书和所附权利要求书中所使用的那样,除非上下文清楚地指明其它情况,否则单数形式的“一”、“一个”及“该”意在包括复数形式。
31.还应当进一步理解,在本技术说明书和所附权利要求书中使用的术语“和/或”是指相关联列出的项中的一个或多个的任何组合以及所有可能组合,并且包括这些组合。
32.请参阅图1和图2,图1为本技术实施例提供的高密度一维码解码方法的应用场景示意图;图2为本技术实施例提供的高密度一维码解码方法的流程示意图,该高密度一维码解码方法应用于服务器中,该方法通过安装于服务器中的应用软件进行执行。
33.如图2所示,该方法包括步骤s101~s105。
34.s101、获取待识别图片中的一维码图片,其中,所述一维码图片包括一维码和至少一个字符串。
35.在本实施例中,为了对一维码图片进行识别,需要先定位获取待识别图片中的一维码图片,然后将一维码图片依据指定存储路径保存至指定存储空间后,再对一维码图片(一维码图片的示意图如图4所示,例如一维码图片中包括一个一维码,和字符串1、字符串2、字符串3至字符串n)进行解码以得到一维码解码结果。其中,初始的待识别图片中其中一块区域是一维码图片,还有其他区域存在且其他区域分布的并非为一维码图片,这就使得待识别图片的初始图片尺寸是大于其中存在的一维码图片的初始一维码图片尺寸。而且所述待识别图片可以是拍摄设备(如扫码终端或智能手机等)拍摄后,由拍摄设备上传至服务器。
36.本技术中对一维码图片进行解码时,并非基于扫码设备进行解码,而是基于图像识别进行解码。基于图像识别对一维码图片进行解码时,可能存在一维码破损或者模糊导致无法解码的情况。但在判断一维码是否能解码之前,需要先获取一维码图片并对一维码图片进行标准化校正,完成了对一维码图片的标准化校正再进行图像识别以完成解码。
37.在一实施例中,为了实现对待识别图片进行快速标准尺寸调整以便于对一维码图片的快速定位和获取,步骤s101具体包括:
38.将所述待识别图片根据预设标准图片尺寸进行图片缩放调整,得到调整图片;
39.通过深度学习模型识别获取所述调整图片中的一维码图片,并定位获取所述一维码图片中包括的一维码和至少一个字符串。
40.在本实施例中,当获取到了所述待识别图片后,可以先获取预先存储的预设标准图片尺寸(如320*320,具体是320像素*320像素,当然具体实施时并不局限于320*320这一预设标准图片尺寸,可以根据实际需求自定义设置),然后将所述待识别图片的图片尺寸缩放至与所述预设标准图片尺寸具有相同图片尺寸,从而得到调整图片。例如,预设标准图片尺寸为320*320,则调整图片对应的图片尺寸大小也是320*320,且一般默认调整图片具有r、g、b这3个通道。
41.所述深度学习模型中是包括多个卷积层且对应有多个激活函数,例如将图片尺寸为320*320且有3个通道(可用320*320*3表示)的调整图片输入至所述深度学习模型进行一维码图片定位后,最终得到的输出结果的尺寸为1*6300*187。其中,输出结果的187个通道对应的187个维度的特征中有180个维度为角度分类结果,2个维度为左上角坐标x、y值(例
如其中1个是一维码的左上角坐标的x1、y1值,另1个是字符串的左上角坐标的x2、y2值,若一维码图片上存在多个字符串,则存在多个字符串的左上角坐标值),2个维度为预测框的长宽(例如其中1个是一维码预测框的长宽,另1个是字符串预测框的长宽,若一维码图片上存在多个字符串,则存在多个字符串预测框的长宽,且每一个字符串的左上角坐标值对应一个字符串预测框的长宽),1个维度为一维码图片预测的置信度,剩余2个维度为2个预测类别(例如其中1个预测类别对应一维码,另1个预测类别对应字符串)。当然,上述输出结果的尺寸为1*6300*187中187个通道是与所述深度学习模型中卷积核的总个数相同,所述深度学习模型中采用的卷积核的个数越多,则最终的输出结果中通道数越多。即上述输出结果的尺寸中的187通道并非唯一适合本技术的通道总数,还可以设置其他取值的通道总数。
42.其中,所述深度学习模型可采用yolov5s模型,yolov5s模型是yolo算法(yolo的全称是you only look once,yolo算法是一种目标检测算法)的v5s版本,其可以用于快速定位待识别图片中的一维码图片。通过yolov5s模型这一深度学习模型识别获取所述调整图片中的一维码图片,可以视为对一维码区域粗略且快速的定位,后续可以进一步对其进行精细定位。
43.s102、对所述一维码图片进行解码,若确定对所述一维码图片中的一维码解码失败,则获取所述至少一个字符串中的每个字符串。
44.在本实施例中,当获取到了一维码图片后,是已知其中一维码的具体区域,例如根据输出结果的187个维度的特征中一维码的左上角坐标的x1、y1值及一维码预测框的长宽是可以准确定位一维码的具体区域。当然,也是可以基于一维码图片获取到其中若干个字符串的具体区域,例如根据输出结果的187个维度的特征中字符串的左上角坐标的x2、y2值及字符串预测框的长宽是可以准确定位字符串的具体区域。
45.具体的,本技术中以一维码为条形码来进一步说明技术方案,当已知了条形码这一个一维码的具体区域后,基于其黑白相间的特点对其进行图像识别,从而实现对其解码。但是对条形码进行解码则存在解码失败不能准确输出解码结果的情况(其中,导致解码失败的原因可能是条形码模糊或者是条形码破损),这就需要采用其他方式辅助进行解码,具体如根据本技术中由字符串辅助解码。
46.在一实施例中,为了快速获取所述一维码图片中存在字符串的区域,步骤s102具体包括:
47.获取所述一维码图片中所述字符串的字符串预测框的左上角坐标,以及所述字符串预测框的长度值和所述字符串预测框的宽度值;
48.根据所述字符串预测框的左上角坐标,以及所述字符串预测框的长度值和所述字符串预测框的宽度值,确定所述字符串预测框的右上角顶点坐标、左下角顶点坐标及右下角顶点坐标;
49.根据所述字符串预测框的左上角坐标、右上角顶点坐标、左下角顶点坐标及右下角顶点坐标所确定的矩形框区域定位所述字符串,及所述字符串对应的区域图片。
50.在本实施例中,仍以所述一维码图片中的一个字符串的定位和获取为例,若该字符串的字符串预测框的长度值用l2表示且宽度值用w2表示,则字符串的具体区域对应的四个顶点坐标分别为左上角顶点坐标(x2,y2)、右上角顶点坐标(x2+l2,y2)、右下角顶点坐标(x2+l2,y2+w2)及左下角顶点坐标(x2,y2+w2),且上述4个顶点作为矩形形状的字符串预测
框的4个顶点。通过字符串预测框的4个顶点可以准确定位所述一维码图片中的字符串,及所述字符串对应的区域图片。若一维码存在多个字符串,则其他字符串的定位和获取同样是参考上述过程。
51.同样的,若一维码预测框的长度值用l1表示且宽度值用w1表示,则一维码的具体区域对应的四个顶点坐标分别为左上角顶点坐标(x1,y1)、右上角顶点坐标(x1+l1,y1)、右下角顶点坐标(x1+l1,y1+w1)及左下角顶点坐标(x1,y1+w1),且上述4个顶点作为矩形形状的一维码预测框的4个顶点。
52.显然,所述一维码图片中至少有1个区域存在字符串,也即在所述一维码图片中可能存在有1个字符串的情况,也可能存在多个字符串的情况,这就使得到在所述一维码图片中获取到的字符串的个数是至少1个。但在所述一维码图片中无论具体存在多少个字符串,基于深度学习模型对一维码图片中字符串进行目标识别和定位后,每一字符串对应的左上角顶点坐标及每一字符串识别框的长宽均是已知的。通过这一字符串的全面定位获取方式,可以确保待识别图片中所有的字符串都可被检测,并作为一维码的候选字符串。
53.在一实施例中,如图2所示,步骤s102之后还包括:
54.s103、针对所述至少一个字符串中的各字符串,将所述字符串对应的区域图片进行图片二值化及字符串偏移矫正,以更新所述字符串。
55.在本实施例中,当定位到一维码图片中的所有字符串(不仅仅包括最终能与一维码匹配成功的目标字符串,还可能存在多个作为候选项或干扰项的字符串)后,为了提高对一维码图片的区域图片中所包括字符识别的准确率,可以先对区域图片进行更加准确和精细化的字符定位。若以一维码图片中的其中一个字符串的准确和精细化的字符定位为例,具体是先对该字符串的区域图片进行图片二值化处理后将所有像素转化为0或255其中一个值以得到二值化后区域图片,然后根据二值化后区域图片中黑色像素的具体分布区域来确定当前字符串的实际边界位置与字符串预测框对应边界位置之间的差距,以当前字符串的实际边界位置与字符串预测框对应边界位置之间的差距作为字符串偏移矫正参数,从而实现根据该字符串偏移矫正参数定位到所述字符串对应的精准边界位置。
56.在一实施例中,为了更准确的定位一维码图片中包括的所有字符串以便于后续进行精准识别,更具体是以对一维码图片中的其中一个字符串的区域进行图片二值化及字符串偏移矫正处理为例,步骤s103具体包括:
57.通过二值化取局部阈值算法对所述区域图片进行图片二值化处理,得到二值化后区域图片;
58.获取所述二值化后区域图片中每一行中黑色像素的个数及相邻行之间黑色像素个数差异值;
59.获取所述相邻行之间黑色像素个数差异值超出预设像素个数阈值的目标行,并将所述目标行所处位置作为所述二值化后区域图片的上下边界位置;
60.根据所述二值化后区域图片的上下边界位置及所述区域图片对应的原始上下边界位置之间的间距,确定字符串偏移矫正参数;
61.将所述字符串偏移矫正参数对所述述二值化后区域图片进行矫正,以更新所述字符串。
62.在本实施例中,仍以对一维码图片中的其中一个字符串的区域进行图片二值化及
字符串偏移矫正处理为例,当定位到一维码图片中该字符串及其对应所属的区域图片后,该字符串对应的区域图片的边界并不一定是准确的边界。此时可以先基于二值化取局部阈值算法,如bernsen二值化算法(即基于局部对比度的二值化算法)、contrast二值化算法(即基于对比度的二值化算法)、mean二值化算法(即基于均值的二值化算法)、median二值化算法(即基于中间值的二值化算法)、midgrey二值化算法(即基于局部范围内像素的最大与最小值之和的一半作为阈值的二值化算法),niblack二值化算法(即基于局部范围内像素的均值与方差的二值化算法)、otsu二值化算法(即大津二值化算法)、phansalkar二值化算法(即一种适用于第对比度图像的二值化算法)等均为基于二值化取局部阈值算法,可用于对所述字符串对应的区域图片(区域图片如图5a所示)进行图片二值化处理,得到二值化后区域图片(二值化后区域图片如图5b所示)。
63.由于二值化后区域图片中每一像素的像素值均是从0或255中二选一,故可以将像素值为0的像素点视为白点(或白色像素),且将像素值为255的点视为黑点(或黑色像素)。当确定了二值化后区域图片中所有黑色像素的分布位置之后,即可准确定位到字符串包括的所有字符。
64.为了更准的确定二值化后区域图片中所有黑色像素的分布位置,可以按照逐行统计黑色像素个数的方式来进行,如图5b中第一行是不存在黑色像素点则该行的黑色像素的个数为0,同样的第二行是不存在黑色像素点则该行的黑色像素的个数为0。之后继续对每一行的黑色像素个数进行统计,当出现黑色像素个数的第一次跳变(即上一行的黑色像素的个数为0,而本行的黑色像素的个数变成一个非0值,且该非0值与0之间的差异值大于预设像素个数阈值),则可以判定此时检测到了所述二值化后区域图片的上边界位置。
65.之后再检测上边界位置下一行的黑色像素的个数同样不为0且相邻行之间黑色像素个数差异值未超出预设像素个数阈值,则表示这一行已经扫描过字符所分布的区域。之后继续对下面每一行的黑色像素个数进行统计,当出现黑色像素个数的第二次跳变(即上二行的黑色像素的个数为非0值,而本行的黑色像素的个数变成0,且该非0值与0之间的差异值大于预设像素个数阈值),则可以判定此时检测到了所述二值化后区域图片的下边界位置。
66.当定位到了所述二值化后区域图片中准确的上下边界位置后,可以根据所述二值化后区域图片的上边界位置及所述区域图片对应的原始上边界位置之间的间距,或者是根据所述二值化后区域图片的下边界位置及所述区域图片对应的原始下边界位置之间的间距,确定字符串偏移矫正参数(其视为一个边界距离差的取值)。
67.最后,在得到了所述字符串偏移矫正参数后,基于所述字符串偏移矫正参数对所述述二值化后区域图片进行矫正,以更新所述字符串。此时所述字符串对应的矫正后区域图片中定位到的字符串边界更为准确。所述一维码图片中的其他字符串的准确和精细化的字符定位也是参考上述过程。
68.s104、针对得到的各字符串,将所述字符串基于所获取的字符识别模型进行识别,得到所述字符串对应的识别结果。
69.在本实施例中,所述字符识别模型具体为ocr模型(ocr的全称是optical character recognition,表示光学字符识别),且所述ocr模型对应的模型字典中包括0-9数字(即10个数字字符),a-z字母(即26个小写字母字符)和a-z字母(即26个大写字母字
符)。通过所述字符识别模型可快速对所述矫正后字符串中包括的数字字符及字母字符进行快速识别,从而得到所述矫正后字符串对应的识别结果。可见,通过上述方式可对一维码图片上所有经过重新定位和矫正后的字符串进行具体字符的识别,从而获知每一字符串包括的具体字符内容。
70.s105、在得到的各识别结果中获取与所述一维码的码制相匹配的识别结果,以作为一维码解码结果。
71.在本实施例中,由于所得到的一维码图片中可能存在有多个区域分布有字符串,而与一维码图片中一维码相匹配的字符串只能有1个,故此时需要在多个分布有字符串的区域中确定与所述一维码具有最短中心间距且与一维码的码制相匹配的字符串,以该字符串的识别结果作为一维码解码结果。可见,基于这一定位目标识别结果的方式,可以准确获取到与一维码相匹配的字符串。
72.在一实施例中,如图3所示,步骤s105具体包括:
73.s1051、获取各所述识别结果所对应各字符串的字符串中心与所述一维码的一维码中心之间的中心间距,并以所述中心间距的升序排序得到中心间距排序结果;
74.s1052、获取预先存储的多个一维码码制;
75.s1053、获取所述中心间距排序结果中第i个中心间距对应的第i个字符串;其中,i的初始取值为1,且i的取值范围是[1,n],n表示所述中心间距排序结果所包括中心间距的总个数;
[0076]
s1054、判断所述第i个字符串与所述多个一维码码制的其中一个一维码码制是否相匹配;
[0077]
s1055、若确定所述第i个字符串与所述多个一维码码制的其中一个一维码码制相匹配,则将所述第i个字符串的识别结果作为所述一维码解码结果并结束流程;
[0078]
s1056、若确定所述第i个字符串与所述多个一维码码制中所有的一维码码制均不匹配,则将i自增1以更新i的取值;
[0079]
s1057、判断i是否大于n;若确定i小于或等于n,则返回执行步骤s1053;若确定i大于n,则执行步骤s1058;
[0080]
s1058、结束流程。
[0081]
在本实施例中,为了更加快速的在各识别结果中确定目标识别结果作为一维码解码结果,可以先将获取所述一维码图片中各字符串的字符串中心与所述一维码的一维码中心之间的中心间距,并以中心间距的升序排序得到中心间距排序结果。通过这一方式得到的中心间距排序结果中排序第一位的中心间距对应的字符串与一维码中心具有最近间距,此时可以先判断其与所述多个一维码码制的其中一个一维码码制是否相匹配。例如常见的一维码码制(若一维码具体以条形码为例)有code-39码的码制、code-128码的码制、ean-13码的码制、upc-a码的码制,此时可以将排序第一位的中心间距对应的字符串分别代入上述码制进行验证,判断其是否满足其中任意一种码制。
[0082]
当排序第一位的中心间距对应的字符串(也即所述中心间距排序结果中第1个中心间距对应的第1个字符串)与所述多个一维码码制的其中一个一维码码制相匹配时,则表示该字符串是目标字符串并无需在执行后续步骤进一步判断其他的字符串,此时直接结束步骤s103对应的流程,并以获取到的目标字符串继续执行后续步骤(如步骤s104)。
[0083]
当排序第一位的中心间距对应的字符串(也即所述中心间距排序结果中第1个中心间距对应的第1个字符串)与所述多个一维码码制中所有的一维码码制均不匹配时,则表示该字符串不是目标字符串,需要进一步获取排序第二位的中心间距对应的字符串(也即所述中心间距排序结果中第2个中心间距对应的第2个字符串)执行相同的一维码码制匹配校验。以此类推,直到从n个字符串中确定到目标字符串,或是确定所有n个字符串均不是目标字符串时才停止上字符串与一维码码制的匹配过程。可见,基于上述轮流匹配的方式,可以有效的筛选出满足一维码码制且与一维码具有最短中心间距的目标字符串,并以该目标字符串对应的识别结果作为一维码解码结果。
[0084]
在一实施例中,所述判断所述第i个字符串与所述多个一维码码制的其中一个一维码码制是否相匹配,具体包括:
[0085]
获取所述多个一维码码制中的第j个一维码码制;其中,j的初始取值为1且j的取值范围是[1,m],m表示所述多个一维码码制中所包括一维码码制的总个数;
[0086]
获取所述第j个一维码码制对应的第j校验位生成模型;
[0087]
获取所述第i个字符串中基于所述第j校验位生成模型生成的第j校验值;
[0088]
判断所述第j校验值与所述第i个字符串中的实际校验值是否相同;
[0089]
若确定所述第j校验值与所述第i个字符串中的实际校验值相同时,则判定所述第i个字符串与所述第j个一维码码制相匹配并结束流程;
[0090]
若确定所述第j校验值与所述第i个字符串中的实际校验值不相同时,则判定所述第i个字符串与所述第j个一维码码制不相匹配,并将j自增1以更新j的取值;
[0091]
判断j是否大于m;
[0092]
若确定j小于或等于m时,则返回执行所述获取所述多个一维码码制中的第j个一维码码制的步骤;
[0093]
若确定j大于m时,则结束流程。
[0094]
在本实施例中,在具体判断所述第i个字符串与所述多个一维码码制的其中一个一维码码制是否相匹配,也是可以采用轮流验证的方式。具体是先获取所述多个一维码码制中的第1个一维码码制,第1个一维码码制具体规定了一维码的字符串应包括的字符总位数及校验位获取规则(即第1个一维码码制对应的第1校验位生成模型是已知的)。之后将所述第i个字符串中基于所述第1校验位生成模型生成的第1校验值,此时可以将第1校验值与所述第i个字符串中实际校验值相比较以确定两者是否相同。若确定所述第1校验值与所述第i个字符串中的实际校验值相同时,则表示所述第i个字符串与所述多个一维码码制中的第1个一维码码制相匹配,此时所述第i个字符串的识别结果可最终作为一维码解码结果。
[0095]
若确定所述第1校验值与所述第i个字符串中的实际校验值不相同时,则表示所述第i个字符串与所述多个一维码码制中的第1个一维码码制不相匹配。需要继续判断所述第i个字符串与所述多个一维码码制的第2个一维码码制是否相匹配,其具体过程仍是参考判断所述第i个字符串与所述多个一维码码制的第1个一维码码制是否相匹配的过程。以此类推,若首次确定到所述第i个字符串与所述多个一维码码制的其中一个一维码码制相匹配则停止流程。若一直未确定到所述第i个字符串与所述多个一维码码制的其中一个一维码码制相匹配,则说明第i个字符串并不能作为与一维码对应的字符串,需要进一步在确定下一个字符串是否能作为与一维码对应的字符串。
[0096]
在一实施例中,步骤s101之后还包括:
[0097]
若确定对所述一维码图片中的一维码解码成功时,则获取解码结果作为所述一维码解码结果。
[0098]
在本实施例中,若直接可基于所述一维码图片中的一维码解码成功,则表示一维码未发生破损或不存在图片模糊的情况,此时直接获取对一维码图像识别得到的解码结果作为一维码解码结果即可。
[0099]
可见,基于本技术实施例提供的高密度一维码解码方法,一是在一维码图片中因一维码未直接成功解码时,借助对位于一维码周围的各字符串进行字符串解码及一维码码制匹配而实现了获取到与一维码对应目标字符串的识别结果;二是对待识别图片进行快速标准尺寸调整,便于对一维码图片的快速定位和获取;三是基于字符串的字符串预测框的属性实现了快速获取一维码图片中存在字符串的区域;四是对字符串对应的区域图片进行图片二值化及字符串偏移矫正,实现对各字符串更准确的定位。
[0100]
本技术实施例还提供一种高密度一维码解码装置,该高密度一维码解码装置用于执行前述高密度一维码解码方法的任一实施例。具体地,请参阅图6,图6是本技术实施例提供的高密度一维码解码装置100的示意性框图。
[0101]
其中,如图6所示,高密度一维码解码装置100包括一维码图片获取模块101、字符串获取模块102、字符串重定位模块103、字符串识别模块104和解码结果获取模块105。
[0102]
一维码图片获取模块101,用于获取待识别图片中的一维码图片,其中,所述一维码图片包括一维码和至少一个字符串。
[0103]
在本实施例中,为了对一维码图片进行识别,需要先定位获取待识别图片中的一维码图片,然后将一维码图片依据指定存储路径保存至指定存储空间后,再对一维码图片(一维码图片的示意图如图4所示,例如一维码图片中包括一个一维码,和字符串1、字符串2、字符串3至字符串n)进行解码以得到一维码解码结果。其中,初始的待识别图片中其中一块区域是一维码图片,还有其他区域存在且其他区域分布的并非为一维码图片,这就使得待识别图片的初始图片尺寸是大于其中存在的一维码图片的初始一维码图片尺寸。而且所述待识别图片可以是拍摄设备(如扫码终端或智能手机等)拍摄后,由拍摄设备上传至服务器。
[0104]
本技术中对一维码图片进行解码时,并非基于扫码设备进行解码,而是基于图像识别进行解码。基于图像识别对一维码图片进行解码时,可能存在一维码破损或者模糊导致无法解码的情况。但在判断一维码是否能解码之前,需要先获取一维码图片并对一维码图片进行标准化校正,完成了对一维码图片的标准化校正再进行图像识别以完成解码。
[0105]
在一实施例中,为了实现对待识别图片进行快速标准尺寸调整以便于对一维码图片的快速定位和获取,一维码图片获取模块101具体用于:
[0106]
将所述待识别图片根据预设标准图片尺寸进行图片缩放调整,得到调整图片;
[0107]
通过深度学习模型识别获取所述调整图片中的一维码图片,并定位获取所述一维码图片中包括的一维码和至少一个字符串。
[0108]
在本实施例中,当获取到了所述待识别图片后,可以先获取预先存储的预设标准图片尺寸(如320*320,具体是320像素*320像素,当然具体实施时并不局限于320*320这一预设标准图片尺寸,可以根据实际需求自定义设置),然后将所述待识别图片的图片尺寸缩
放至与所述预设标准图片尺寸具有相同图片尺寸,从而得到调整图片。例如,预设标准图片尺寸为320*320,则调整图片对应的图片尺寸大小也是320*320,且一般默认调整图片具有r、g、b这3个通道。
[0109]
所述深度学习模型中是包括多个卷积层且对应有多个激活函数,例如将图片尺寸为320*320且有3个通道(可用320*320*3表示)的调整图片输入至所述深度学习模型进行一维码图片定位后,最终得到的输出结果的尺寸为1*6300*187。其中,输出结果的187个通道对应的187个维度的特征中有180个维度为角度分类结果,2个维度为左上角坐标x、y值(例如其中1个是一维码的左上角坐标的x1、y1值,另1个是字符串的左上角坐标的x2、y2值,若一维码图片上存在多个字符串,则存在多个字符串的左上角坐标值),2个维度为预测框的长宽(例如其中1个是一维码预测框的长宽,另1个是字符串预测框的长宽,若一维码图片上存在多个字符串,则存在多个字符串预测框的长宽,且每一个字符串的左上角坐标值对应一个字符串预测框的长宽),1个维度为一维码图片预测的置信度,剩余2个维度为2个预测类别(例如其中1个预测类别对应一维码,另1个预测类别对应字符串)。当然,上述输出结果的尺寸为1*6300*187中187个通道是与所述深度学习模型中卷积核的总个数相同,所述深度学习模型中采用的卷积核的个数越多,则最终的输出结果中通道数越多。即上述输出结果的尺寸中的187通道并非唯一适合本技术的通道总数,还可以设置其他取值的通道总数。
[0110]
其中,所述深度学习模型可采用yolov5s模型,yolov5s模型是yolo算法(yolo的全称是you only look once,yolo算法是一种目标检测算法)的v5s版本,其可以用于快速定位待识别图片中的一维码图片。通过yolov5s模型这一深度学习模型识别获取所述调整图片中的一维码图片,可以视为对一维码区域粗略且快速的定位,后续可以进一步对其进行精细定位。
[0111]
字符串获取模块102,用于对所述一维码图片进行解码,若确定对所述一维码图片中的一维码解码失败,则获取所述至少一个字符串中的每个字符串。
[0112]
在本实施例中,当获取到了一维码图片后,是已知其中一维码的具体区域,例如根据输出结果的187个维度的特征中一维码的左上角坐标的x1、y1值及一维码预测框的长宽是可以准确定位一维码的具体区域。当然,也是可以基于一维码图片获取到其中若干个字符串的具体区域,例如根据输出结果的187个维度的特征中字符串的左上角坐标的x2、y2值及字符串预测框的长宽是可以准确定位字符串的具体区域。
[0113]
具体的,本技术中以一维码为条形码来进一步说明技术方案,当已知了条形码这一个一维码的具体区域后,基于其黑白相间的特点对其进行图像识别,从而实现对其解码。但是对条形码进行解码则存在解码失败不能准确输出解码结果的情况(其中,导致解码失败的原因可能是条形码模糊或者是条形码破损),这就需要采用其他方式辅助进行解码,具体如根据本技术中由字符串辅助解码。
[0114]
在一实施例中,为了快速获取所述一维码图片中存在字符串的区域,字符串获取模块102具体用于:
[0115]
获取所述一维码图片中所述字符串的字符串预测框的左上角坐标,以及所述字符串预测框的长度值和所述字符串预测框的宽度值;
[0116]
根据所述字符串预测框的左上角坐标,以及所述字符串预测框的长度值和所述字符串预测框的宽度值,确定所述字符串预测框的右上角顶点坐标、左下角顶点坐标及右下
角顶点坐标;
[0117]
根据所述字符串预测框的左上角坐标、右上角顶点坐标、左下角顶点坐标及右下角顶点坐标所确定的矩形框区域定位所述字符串,及所述字符串对应的区域图片。
[0118]
在本实施例中,仍以所述一维码图片中的一个字符串的定位和获取为例,若该字符串的字符串预测框的长度值用l2表示且宽度值用w2表示,则字符串的具体区域对应的四个顶点坐标分别为左上角顶点坐标(x2,y2)、右上角顶点坐标(x2+l2,y2)、右下角顶点坐标(x2+l2,y2+w2)及左下角顶点坐标(x2,y2+w2),且上述4个顶点作为矩形形状的字符串预测框的4个顶点。通过字符串预测框的4个顶点可以准确定位所述一维码图片中的字符串,及所述字符串对应的区域图片。若一维码存在多个字符串,则其他字符串的定位和获取同样是参考上述过程。
[0119]
同样的,若一维码预测框的长度值用l1表示且宽度值用w1表示,则一维码的具体区域对应的四个顶点坐标分别为左上角顶点坐标(x1,y1)、右上角顶点坐标(x1+l1,y1)、右下角顶点坐标(x1+l1,y1+w1)及左下角顶点坐标(x1,y1+w1),且上述4个顶点作为矩形形状的一维码预测框的4个顶点。
[0120]
显然,所述一维码图片中至少有1个区域存在字符串,也即在所述一维码图片中可能存在有1个字符串的情况,也可能存在多个字符串的情况,这就使得到在所述一维码图片中获取到的字符串的个数是至少1个。但在所述一维码图片中无论具体存在多少个字符串,基于深度学习模型对一维码图片中字符串进行目标识别和定位后,每一字符串对应的左上角顶点坐标及每一字符串识别框的长宽均是已知的。通过这一字符串的全面定位获取方式,可以确保待识别图片中所有的字符串都可被检测,并作为一维码的候选字符串。
[0121]
字符串重定位模块103,用于针对所述至少一个字符串中的各字符串,将所述字符串对应的区域图片进行图片二值化及字符串偏移矫正,以更新所述字符串。
[0122]
在本实施例中,当定位到一维码图片中的所有字符串(不仅仅包括最终能与一维码匹配成功的目标字符串,还可能存在多个作为候选项或干扰项的字符串)后,为了提高对一维码图片的区域图片中所包括字符识别的准确率,可以先对区域图片进行更加准确和精细化的字符定位。若以一维码图片中的其中一个字符串的准确和精细化的字符定位为例,具体是先对该字符串的区域图片进行图片二值化处理后将所有像素转化为0或255其中一个值以得到二值化后区域图片,然后根据二值化后区域图片中黑色像素的具体分布区域来确定当前字符串的实际边界位置与字符串预测框对应边界位置之间的差距,以当前字符串的实际边界位置与字符串预测框对应边界位置之间的差距作为字符串偏移矫正参数,从而实现根据该字符串偏移矫正参数定位到所述字符串对应的精准边界位置。
[0123]
在一实施例中,为了更准确的定位一维码图片中包括的所有字符串以便于后续进行精准识别,更具体是以对一维码图片中的其中一个字符串的区域进行图片二值化及字符串偏移矫正处理为例,字符串重定位模块103具体用于:
[0124]
通过二值化取局部阈值算法对所述区域图片进行图片二值化处理,得到二值化后区域图片;
[0125]
获取所述二值化后区域图片中每一行中黑色像素的个数及相邻行之间黑色像素个数差异值;
[0126]
获取所述相邻行之间黑色像素个数差异值超出预设像素个数阈值的目标行,并将
所述目标行所处位置作为所述二值化后区域图片的上下边界位置;
[0127]
根据所述二值化后区域图片的上下边界位置及所述区域图片对应的原始上下边界位置之间的间距,确定字符串偏移矫正参数;
[0128]
将所述字符串偏移矫正参数对所述述二值化后区域图片进行矫正,以更新所述字符串。
[0129]
在本实施例中,仍以对一维码图片中的其中一个字符串的区域进行图片二值化及字符串偏移矫正处理为例,当定位到一维码图片中该字符串及其对应所属的区域图片后,该字符串对应的区域图片的边界并不一定是准确的边界。此时可以先基于二值化取局部阈值算法,如bernsen二值化算法(即基于局部对比度的二值化算法)、contrast二值化算法(即基于对比度的二值化算法)、mean二值化算法(即基于均值的二值化算法)、median二值化算法(即基于中间值的二值化算法)、midgrey二值化算法(即基于局部范围内像素的最大与最小值之和的一半作为阈值的二值化算法),niblack二值化算法(即基于局部范围内像素的均值与方差的二值化算法)、otsu二值化算法(即大津二值化算法)、phansalkar二值化算法(即一种适用于第对比度图像的二值化算法)等均为基于二值化取局部阈值算法,可用于对所述字符串对应的区域图片(区域图片如图5a所示)进行图片二值化处理,得到二值化后区域图片(二值化后区域图片如图5b所示)。
[0130]
由于二值化后区域图片中每一像素的像素值均是从0或255中二选一,故可以将像素值为0的像素点视为白点(或白色像素),且将像素值为255的点视为黑点(或黑色像素)。当确定了二值化后区域图片中所有黑色像素的分布位置之后,即可准确定位到字符串包括的所有字符。
[0131]
为了更准的确定二值化后区域图片中所有黑色像素的分布位置,可以按照逐行统计黑色像素个数的方式来进行,如图5b中第一行是不存在黑色像素点则该行的黑色像素的个数为0,同样的第二行是不存在黑色像素点则该行的黑色像素的个数为0。之后继续对每一行的黑色像素个数进行统计,当出现黑色像素个数的第一次跳变(即上一行的黑色像素的个数为0,而本行的黑色像素的个数变成一个非0值,且该非0值与0之间的差异值大于预设像素个数阈值),则可以判定此时检测到了所述二值化后区域图片的上边界位置。
[0132]
之后再检测上边界位置下一行的黑色像素的个数同样不为0且相邻行之间黑色像素个数差异值未超出预设像素个数阈值,则表示这一行已经扫描过字符所分布的区域。之后继续对下面每一行的黑色像素个数进行统计,当出现黑色像素个数的第二次跳变(即上二行的黑色像素的个数为非0值,而本行的黑色像素的个数变成0,且该非0值与0之间的差异值大于预设像素个数阈值),则可以判定此时检测到了所述二值化后区域图片的下边界位置。
[0133]
当定位到了所述二值化后区域图片中准确的上下边界位置后,可以根据所述二值化后区域图片的上边界位置及所述区域图片对应的原始上边界位置之间的间距,或者是根据所述二值化后区域图片的下边界位置及所述区域图片对应的原始下边界位置之间的间距,确定字符串偏移矫正参数(其视为一个边界距离差的取值)。
[0134]
最后,在得到了所述字符串偏移矫正参数后,基于所述字符串偏移矫正参数对所述述二值化后区域图片进行矫正,得到矫正后字符串。此时矫正后字符串对应的矫正后区域图片中定位到的字符串边界更为准确。所述一维码图片中的其他字符串的准确和精细化
的字符定位也是参考上述过程。
[0135]
字符串识别模块104,用于针对得到的各字符串,将所述字符串基于所获取的字符识别模型进行识别,得到所述字符串对应的识别结果。
[0136]
在本实施例中,所述字符识别模型具体为ocr模型(ocr的全称是optical character recognition,表示光学字符识别),且所述ocr模型对应的模型字典中包括0-9数字(即10个数字字符),a-z字母(即26个小写字母字符)和a-z字母(即26个大写字母字符)。通过所述字符识别模型可快速对所述矫正后字符串中包括的数字字符及字母字符进行快速识别,从而得到所述矫正后字符串对应的识别结果。可见,通过上述方式可对一维码图片上所有经过重新定位和矫正后的字符串进行具体字符的识别,从而获知每一字符串包括的具体字符内容。
[0137]
解码结果获取模块105,用于在得到的各识别结果中获取与所述一维码的码制相匹配的识别结果,以作为一维码解码结果。
[0138]
在本实施例中,由于所得到的一维码图片中可能存在有多个区域分布有字符串,而与一维码图片中一维码相匹配的字符串只能有1个,故此时需要在多个分布有字符串的区域中确定与所述一维码具有最短中心间距且与一维码的码制相匹配的字符串,以该字符串的识别结果作为一维码解码结果。可见,基于这一定位目标识别结果的方式,可以准确获取到与一维码相匹配的字符串。
[0139]
在一实施例中,解码结果获取模块105具体用于:
[0140]
获取各所述识别结果所对应各字符串的字符串中心与所述一维码的一维码中心之间的中心间距,并以所述中心间距的升序排序得到中心间距排序结果;
[0141]
获取预先存储的多个一维码码制;
[0142]
获取所述中心间距排序结果中第i个中心间距对应的第i个字符串;其中,i的初始取值为1,且i的取值范围是[1,n],n表示所述中心间距排序结果所包括中心间距的总个数;
[0143]
判断所述第i个字符串与所述多个一维码码制的其中一个一维码码制是否相匹配;
[0144]
若确定所述第i个字符串与所述多个一维码码制的其中一个一维码码制相匹配,则将所述第i个字符串的识别结果作为所述一维码解码结果并结束流程;
[0145]
若确定所述第i个字符串与所述多个一维码码制中所有的一维码码制均不匹配,则将i自增1以更新i的取值;
[0146]
判断i是否大于n;
[0147]
若确定i小于或等于n时,则返回执行所述获取所述中心间距排序结果中第i个中心间距对应的第i个字符串的步骤;
[0148]
若确定i大于n时,则结束流程。
[0149]
在本实施例中,为了更加快速的在各识别结果中确定目标识别结果作为一维码解码结果,可以先将获取所述一维码图片中各字符串的字符串中心与所述一维码的一维码中心之间的中心间距,并以中心间距的升序排序得到中心间距排序结果。通过这一方式得到的中心间距排序结果中排序第一位的中心间距对应的字符串与一维码中心具有最近间距,此时可以先判断其与所述多个一维码码制的其中一个一维码码制是否相匹配。例如常见的一维码码制(若一维码具体以条形码为例)有code-39码的码制、code-128码的码制、ean-13
码的码制、upc-a码的码制,此时可以将排序第一位的中心间距对应的字符串分别代入上述码制进行验证,判断其是否满足其中任意一种码制。
[0150]
当排序第一位的中心间距对应的字符串(也即所述中心间距排序结果中第1个中心间距对应的第1个字符串)与所述多个一维码码制的其中一个一维码码制相匹配时,则表示该字符串是目标字符串并无需在执行后续步骤进一步判断其他的字符串,此时直接结束字符串重定位模块103对应执行的全部流程,并以获取到的目标字符串继续执行后续步骤(如字符串识别模块104对应执行的全部流程)。
[0151]
当排序第一位的中心间距对应的字符串(也即所述中心间距排序结果中第1个中心间距对应的第1个字符串)与所述多个一维码码制中所有的一维码码制均不匹配时,则表示该字符串不是目标字符串,需要进一步获取排序第二位的中心间距对应的字符串(也即所述中心间距排序结果中第2个中心间距对应的第2个字符串)执行相同的一维码码制匹配校验。以此类推,直到从n个字符串中确定到目标字符串,或是确定所有n个字符串均不是目标字符串时才停止上字符串与一维码码制的匹配过程。可见,基于上述轮流匹配的方式,可以有效的筛选出满足一维码码制且与一维码具有最短中心间距的目标字符串,并以该目标字符串对应的识别结果作为一维码解码结果。
[0152]
在一实施例中,所述判断所述第i个字符串与所述多个一维码码制的其中一个一维码码制是否相匹配,具体包括:
[0153]
获取所述多个一维码码制中的第j个一维码码制;其中,j的初始取值为1且j的取值范围是[1,m],m表示所述多个一维码码制中所包括一维码码制的总个数;
[0154]
获取所述第j个一维码码制对应的第j校验位生成模型;
[0155]
获取所述第i个字符串中基于所述第j校验位生成模型生成的第j校验值;
[0156]
判断所述第j校验值与所述第i个字符串中的实际校验值是否相同;
[0157]
若确定所述第j校验值与所述第i个字符串中的实际校验值相同时,则判定所述第i个字符串与所述第j个一维码码制相匹配并结束流程;
[0158]
若确定所述第j校验值与所述第i个字符串中的实际校验值不相同时,则判定所述第i个字符串与所述第j个一维码码制不相匹配,并将j自增1以更新j的取值;
[0159]
判断j是否大于m;
[0160]
若确定j小于或等于m时,则返回执行所述获取所述多个一维码码制中的第j个一维码码制的步骤;
[0161]
若确定j大于m时,则结束流程。
[0162]
在本实施例中,在具体判断所述第i个字符串与所述多个一维码码制的其中一个一维码码制是否相匹配,也是可以采用轮流验证的方式。具体是先获取所述多个一维码码制中的第1个一维码码制,第1个一维码码制具体规定了一维码的字符串应包括的字符总位数及校验位获取规则(即第1个一维码码制对应的第1校验位生成模型是已知的)。之后将所述第i个字符串中基于所述第1校验位生成模型生成的第1校验值,此时可以将第1校验值与所述第i个字符串中实际校验值相比较以确定两者是否相同。若确定所述第1校验值与所述第i个字符串中的实际校验值相同时,则表示所述第i个字符串与所述多个一维码码制中的第1个一维码码制相匹配,此时所述第i个字符串的识别结果可最终作为一维码解码结果。
[0163]
若确定所述第1校验值与所述第i个字符串中的实际校验值不相同时,则表示所述
第i个字符串与所述多个一维码码制中的第1个一维码码制不相匹配。需要继续判断所述第i个字符串与所述多个一维码码制的第2个一维码码制是否相匹配,其具体过程仍是参考判断所述第i个字符串与所述多个一维码码制的第1个一维码码制是否相匹配的过程。以此类推,若首次确定到所述第i个字符串与所述多个一维码码制的其中一个一维码码制相匹配则停止流程。若一直未确定到所述第i个字符串与所述多个一维码码制的其中一个一维码码制相匹配,则说明第i个字符串并不能作为与一维码对应的字符串,需要进一步在确定下一个字符串是否能作为与一维码对应的字符串。
[0164]
在一实施例中,高密度一维码解码装置100还包括:
[0165]
解码模块,用于若确定对所述一维码图片中的一维码解码成功时,则获取解码结果作为所述一维码解码结果。
[0166]
在本实施例中,若直接可基于所述一维码图片中的一维码解码成功,则表示一维码未发生破损或不存在图片模糊的情况,此时直接获取对一维码图像识别得到的解码结果作为一维码解码结果即可。
[0167]
该装置实现了在一维码图片中因一维码未直接成功解码时,借助对位于一维码周围的各字符串进行字符串解码及一维码码制匹配而获取到与一维码对应目标字符串的识别结果,以该识别结果作为一维码的解码结果,提高一维码的解码成功率。
[0168]
上述高密度一维码解码装置可以实现为计算机程序的形式,该计算机程序可以在如图7所示的计算机设备上运行。
[0169]
请参阅图7,图7是本技术实施例提供的计算机设备的示意性框图。该计算机设备500是服务器,也可以是服务器集群。服务器可以是独立的服务器,也可以是提供云服务、云数据库、云计算、云函数、云存储、网络服务、云通信、中间件服务、域名服务、安全服务、内容分发网络(content delivery network,cdn)、以及大数据和人工智能平台等基础云计算服务的云服务器。
[0170]
参阅图7,该计算机设备500包括通过装置总线501连接的处理器502、存储器和网络接口505,其中,存储器可以包括存储介质503和内存储器504。
[0171]
该存储介质503可存储操作系统5031和计算机程序5032。该计算机程序5032被执行时,可使得处理器502执行高密度一维码解码方法。
[0172]
该处理器502用于提供计算和控制能力,支撑整个计算机设备500的运行。
[0173]
该内存储器504为存储介质503中的计算机程序5032的运行提供环境,该计算机程序5032被处理器502执行时,可使得处理器502执行高密度一维码解码方法。
[0174]
该网络接口505用于进行网络通信,如提供数据信息的传输等。本领域技术人员可以理解,图7中示出的结构,仅仅是与本技术方案相关的部分结构的框图,并不构成对本技术方案所应用于其上的计算机设备500的限定,具体的计算机设备500可以包括比图中所示更多或更少的部件,或者组合某些部件,或者具有不同的部件布置。
[0175]
其中,所述处理器502用于运行存储在存储器中的计算机程序5032,以实现本技术实施例公开的高密度一维码解码方法。
[0176]
本领域技术人员可以理解,图7中示出的计算机设备的实施例并不构成对计算机设备具体构成的限定,在其他实施例中,计算机设备可以包括比图示更多或更少的部件,或者组合某些部件,或者不同的部件布置。例如,在一些实施例中,计算机设备可以仅包括存
储器及处理器,在这样的实施例中,存储器及处理器的结构及功能与图7所示实施例一致,在此不再赘述。
[0177]
应当理解,在本技术实施例中,处理器502可以是中央处理单元(central processing unit,cpu),该处理器502还可以是其他通用处理器、数字信号处理器(digital signal processor,dsp)、专用集成电路(application specific integrated circuit,asic)、现成可编程门阵列(field-programmable gate array,fpga)或者其他可编程逻辑器件、分立门或者晶体管逻辑器件、分立硬件组件等。其中,通用处理器可以是微处理器或者该处理器也可以是任何常规的处理器等。
[0178]
在本技术的另一实施例中提供计算机可读存储介质。该计算机可读存储介质可以为非易失性的计算机可读存储介质,也可以为易失性的计算机可读存储介质。该计算机可读存储介质存储有计算机程序,其中计算机程序被处理器执行时实现本技术实施例公开的高密度一维码解码方法。
[0179]
所属领域的技术人员可以清楚地了解到,为了描述的方便和简洁,上述描述的设备、装置和单元的具体工作过程,可以参考前述方法实施例中的对应过程,在此不再赘述。本领域普通技术人员可以意识到,结合本文中所公开的实施例描述的各示例的单元及算法步骤,能够以电子硬件、计算机软件或者二者的结合来实现,为了清楚地说明硬件和软件的可互换性,在上述说明中已经按照功能一般性地描述了各示例的组成及步骤。这些功能究竟以硬件还是软件方式来执行取决于技术方案的特定应用和设计约束条件。专业技术人员可以对每个特定的应用来使用不同方法来实现所描述的功能,但是这种实现不应认为超出本技术的范围。
[0180]
在本技术所提供的几个实施例中,应该理解到,所揭露的设备、装置和方法,可以通过其它的方式实现。例如,以上所描述的装置实施例仅仅是示意性的,例如,所述单元的划分,仅仅为逻辑功能划分,实际实现时可以有另外的划分方式,也可以将具有相同功能的单元集合成一个单元,例如多个单元或组件可以结合或者可以集成到另一个装置,或一些特征可以忽略,或不执行。另外,所显示或讨论的相互之间的耦合或直接耦合或通信连接可以是通过一些接口、装置或单元的间接耦合或通信连接,也可以是电的,机械的或其它的形式连接。
[0181]
所述作为分离部件说明的单元可以是或者也可以不是物理上分开的,作为单元显示的部件可以是或者也可以不是物理单元,即可以位于一个地方,或者也可以分布到多个网络单元上。可以根据实际的需要选择其中的部分或者全部单元来实现本技术实施例方案的目的。
[0182]
另外,在本技术各个实施例中的各功能单元可以集成在一个处理单元中,也可以是各个单元单独物理存在,也可以是两个或两个以上单元集成在一个单元中。上述集成的单元既可以采用硬件的形式实现,也可以采用软件功能单元的形式实现。
[0183]
所述集成的单元如果以软件功能单元的形式实现并作为独立的产品销售或使用时,可以存储在一个存储介质中。基于这样的理解,本技术的技术方案本质上或者说对现有技术做出贡献的部分,或者该技术方案的全部或部分可以软件产品的形式体现出来,该计算机软件产品存储在一个存储介质中,包括若干指令用以使得一台计算机设备(可以是个人计算机,后台服务器,或者网络设备等)执行本技术各个实施例所述方法的全部或部分步
骤。而前述的存储介质包括:u盘、移动硬盘、只读存储器(rom,read-only memory)、磁碟或者光盘等各种可以存储程序代码的介质。
[0184]
以上所述,仅为本技术的具体实施方式,但本技术的保护范围并不局限于此,任何熟悉本技术领域的技术人员在本技术揭露的技术范围内,可轻易想到各种等效的修改或替换,这些修改或替换都应涵盖在本技术的保护范围之内。因此,本技术的保护范围应以权利要求的保护范围为准。
当前第1页1 2 
网友询问留言 已有0条留言
  • 还没有人留言评论。精彩留言会获得点赞!
1