二维码的生成方法、识别方法、装置、设备及存储介质与流程

未命名 10-19 阅读:112 评论:0


1.本公开涉及电子技术领域,具体为计算机视觉等技术领域。具体涉及一种二维码的生成方法、识别方法、装置、设备及存储介质。


背景技术:

2.随着时代的不断发展,二维码在现代互联网的应用已经非常广泛,为信息的传输和获取提供了极大的便利,在人们的日常生活中几乎随处可见。目前二维码的应用场景已经在在如下场景中灵活应用:扫码支付、商品防伪、名片分享、网页分享、物联网、营销活动、旅游景点导览、电子票务、登录验证、信息采集等。
3.然而,随着互联网新业务的发展,对二维码提出了更高的要求。


技术实现要素:

4.本公开提供了一种二维码的生成方法、识别方法、装置、设备及存储介质。
5.根据本公开的一方面,提供了一种二维码的生成方法,包括:
6.对待绘制的目标数据内容进行编码得到经编码的目标数据序列;
7.根据从候选绘制协议中选择的目标绘制协议,确定二维码的元信息;所述目标绘制协议至少包括预设的分割规则、各同心圆的单位旋转角度和绘制属性信息;
8.基于所述分割规则,根据各同心圆的单位旋转角度和所述元信息,对所述目标数据序列进行分割得到各同心圆对应的子数据序列;
9.根据各同心圆的绘制属性信息,将对应的子数据序列绘制在各同心圆上,得到目标数据内容对应的目标二维码。
10.根据本公开的又一方面,提供了一种二维码的识别方法,包括:
11.从二维码的扫描图像中提取二维码的元信息,并根据所述元信息确定二维码所采用的目标绘制协议;所述目标绘制协议至少包括预设的分割规则、各同心圆的单位旋转角度和绘制属性信息;
12.根据各同心圆的单位旋转角度和绘制属性信息,确定各同心圆对应的子数据序列;
13.基于预设的分割规则,根据所述各同心圆的单位旋转角度,对各同心圆对应的子数据序列进行分割后的恢复操作,得到二维码对应的目标数据序列;
14.对所述目标数据序列进行解码得到二维码对应的目标数据内容。
15.根据本公开的一方面,提供了一种二维码的生成装置,包括:
16.内容编码模块,用于对待绘制的目标数据内容进行编码得到经编码的目标数据序列;
17.元信息模块,用于根据从候选绘制协议中选择的目标绘制协议,确定二维码的元信息;所述目标绘制协议至少包括预设的分割规则、各同心圆的单位旋转角度和绘制属性信息;
18.数据分割模块,用于基于所述分割规则,根据各同心圆的单位旋转角度和所述元信息,对所述目标数据序列进行分割得到各同心圆对应的子数据序列;
19.绘制模块,用于根据各同心圆的绘制属性信息,将对应的子数据序列绘制在各同心圆上,得到目标数据内容对应的目标二维码。
20.根据本公开的一方面,提供了一种二维码的识别装置,包括:
21.目标协议模块,用于从二维码的扫描图像中提取二维码的元信息,并根据所述元信息确定二维码所采用的目标绘制协议;所述目标绘制协议至少包括预设的分割规则、各同心圆的单位旋转角度和绘制属性信息;
22.子数据序列模块,用于根据各同心圆的单位旋转角度和绘制属性信息,确定各同心圆对应的子数据序列;
23.目标数据序列模块,用于基于预设的分割规则,根据所述各同心圆的单位旋转角度,对各同心圆对应的子数据序列进行分割后的恢复操作,得到二维码对应的目标数据序列;
24.目标数据内容模块,用于对所述目标数据序列进行解码得到二维码对应的目标数据内容。
25.根据本公开的另一方面,提供了一种电子设备,该电子设备包括:
26.至少一个处理器;以及
27.与所述至少一个处理器通信连接的存储器;其中,
28.所述存储器存储有可被所述至少一个处理器执行的指令,所述指令被所述至少一个处理器执行,以使所述至少一个处理器能够执行本公开任意实施例所提供的方法。
29.根据本公开的另一方面,提供了一种存储有计算机指令的非瞬时计算机可读存储介质,其中,所述计算机指令用于使计算机执行本公开任意实施例所提供的方法。
30.应当理解,本部分所描述的内容并非旨在标识本公开的实施例的关键或重要特征,也不用于限制本公开的范围。本公开的其它特征将通过以下的说明书而变得容易理解。
附图说明
31.附图用于更好地理解本方案,不构成对本公开的限定。其中:
32.图1是根据本公开实施例提供的一种二维码的生成方法的流程图;
33.图2是根据本公开实施例提供的另一种二维码的生成方法的流程图;
34.图3是根据本公开实施例提供的又一种二维码的生成方法的流程图;
35.图4是根据本公开实施例提供的一种二维码的识别方法的流程图;
36.图5a是根据本公开实施例提供的另一种二维码的识别方法的流程图;
37.图5b是根据本公开实施例提供的一种二维码的示意图;
38.图5c和图5d分别是根据本公开实施例提供的一种目标三角形的示意图和原三角形的示意图;
39.图6是根据本公开实施例提供的一种二维码的生成装置的结构示意图;
40.图7是根据本公开实施例提供的一种二维码的识别装置的结构示意图;
41.图8是用来实现本公开实施例的二维码的生成方法或二维码的识别方法的电子设备的框图。
具体实施方式
42.图1是根据本公开实施例提供的一种二维码的生成方法的流程图。该方法适用于为目标数据内容构建二维码的情况。该方法可以由二维码的生成装置来执行,该装置可以采用软件和/或硬件的方式实现,并可集成于电子设备中。如图1所示,本实施例的二维码的生成方法可
43.以包括:
44.s101,对待绘制的目标数据内容进行编码得到经编码的目标数据序列;
45.s102,根据从候选绘制协议中选择的目标绘制协议,确定二维码的元信息;所述目标绘制协议至少包括预设的分割规则、各同心圆的单位旋转角度和绘制属性信息;
46.s103,基于所述分割规则,根据各同心圆的单位旋转角度和所述元信息,对所述目标数据序列进行分割得到各同心圆对应的子数据序列;
47.s104,根据各同心圆的绘制属性信息,将对应的子数据序列绘制在各同心圆上,得到目标数据内容对应的目标二维码。
48.其中,待绘制的目标数据内容根据二维码的应用场景确定,例如在信息分享场景中目标数据内容可为待分享信息的资源地址,在扫描支付场景中目标数据内容可为收款账号信息等。可按照二维码的编码格式对目标数据内容进行编码,得到比特化的目标数据序列。本公开实施例对编码格式不做具体限定。
49.在本公开实施例中提供一种圆形二维码的构建方式,预先提供多种候选绘制协议供选择使用,候选绘制协议至少包括预设的分割规则、各同心圆的单位旋转角度和绘制属性信息。分割规则用于将目标数据序列中的数据分配到各同心圆中;同心圆的单位旋转角度用于表征同心圆上单个码元所对应的旋转角度,根据同心圆的单位旋转角度可得到同心圆上的码元数量,例如各同心圆的单位旋转角度可从8
°
,6
°
,4
°
中灵活选择,内层同心圆的单位旋转角度相比于外层同心圆更高。同心圆的绘制属性信息可包括同心圆的半径、起始绘制位置、绘制方向等。各同心圆的半径可从多个候选半径中选择,内层同心圆的半径低于外层同心圆的半径。起始绘制位置可为从[0,360
°
]中指定的任一角度,绘制方向可为顺时针方向或逆时针方向。
[0050]
在二维码构建过程中,可从多种候选绘制协议中灵活地选择目标绘制协议,并将目标绘制协议的内容转化成比特化的元信息绘制在二维码上,便于后续根据元信息确定二维码使用的目标绘制协议,并按照目标绘制协议对二维码进行识别。通过上述处理,不仅能够提高二维码的多样性,通过灵活地对分割规则、同心圆上的单位旋转角度和绘制属性信息进行设置,还能够提高二维码的复杂度,避免二维码上的信息被篡改、泄露,从而提高二维码的信息安全性。
[0051]
在本公开实施例中,基于预设的分割规则,根据各同心圆的单位旋转角度确定各同心圆上的码元数量,并根据各同心圆上的码元数量和元信息的长度,将目标数据序列分配到各同心圆上,得到各同心圆对应的子数据序列。并且,针对每一同心圆,还可根据该同心圆的绘制属性信息,将对应的子数据序列中的各数据依次绘制在该同心圆上。
[0052]
分割规则可根据二维码的使用场景灵活设置,通过基于分割规则,将目标数据序列分配到各同心圆,能够增加各同心圆对应的子数据序列的复杂度。例如,通过调整分割规则,可将目标数据序列中索引号为i的数据分配到不同子数据序列中,也可调整该数据在单
个子数据序列中的顺序,i为自然数。因而,通过基于分割规则,将目标数据序列分配到各同心圆上得到各同心圆对应的子数据序列,能够进一步增加二维码的破解难度,提高安全性。
[0053]
本公开实施例提供的技术方案,通过根据从候选绘制协议中选择的目标绘制协议确定元信息,且基于分割规则,对所述目标数据序列进行分割得到各同心圆对应的子数据序列,不仅能够提高二维码的多样性,还能够提高二维码的复杂度,避免二维码上的信息泄露,从而提高二维码的信息安全性。
[0054]
在一种可选实施方式中,所述根据从候选绘制协议中选择的目标绘制协议,确定二维码的元信息,包括:针对候选绘制协议中的每一协议项,根据目标绘制协议的协议内容在该协议项中的序号,确定该协议项的编码信息;按照各协议项之间的预设顺序,对各协议项的编码信息进行排列,得到二维码的元信息。
[0055]
在本公开实施例中,可将各同心圆上的单位旋转角度、分割规则、诸如各同心圆的半径集合、起始绘制位置、绘制方向等绘制属性信息分别作为协议项;针对每一协议项,可提供该协议项的多种协议内容,以及各协议内容在该协议项中的序号。针对每一协议项,将目标绘制协议的协议内容在该协议项中的序号,作为该协议项的编码信息;按照各协议项之间的顺序,对各协议项的编码信息进行排序,得到二维码的元信息。需要说明的是,各协议项之间的预设顺序可根据二维码的使用场景确定。
[0056]
具体的,在任一协议项有k种候选内容,且目标绘制协议的协议内容在该协议项中的序号为k的情况下,该协议项的编码信息为k。k的取值区间为[0,k-1],k为正整数。例如,在半径集合这一协议项上,序号0对应的协议内容可为[1,1.2,1.4,1.6,1.8,2.0];在各同心圆上的单位旋转角度这一协议项上,序号0对应的协议内容可为[8
°
,8
°
,6
°
,6
°
,4
°
,4
°
];在起始绘制位置这一协议项上,序号为0对应的协议内容可为[0
°
,45
°
,90
°
,180
°
,270
°
,0
°
];在绘制方向这一协议项上,序号为0对应的协议内容可为顺时针。例如,在存在6个协议项的情况下,对各协议项的编码信息进行排列可得到100102,转化成二进制得到元信息。
[0057]
通过根据目标绘制协议的协议内容在每一协议项中的序号,确定该协议项的编码信息;并对各协议项的编码信息进行排列得到二维码的元信息,便于后续使用元信息进行二维码识别。
[0058]
另外需要说明的是,本公开实施例中的协议项还可包括如下:定位点离圆心的距离、定位图案的半径、校正图案的半径、纠错方式、掩码方式等。
[0059]
图2是根据本公开实施例提供的另一种二维码的生成方法的流程图。参见图2,本实施例的二维码的生成方法可以包括:
[0060]
s201,对待绘制的目标数据内容进行编码得到经编码的目标数据序列;
[0061]
s202,根据从候选绘制协议中选择的目标绘制协议,确定二维码的元信息;所述目标绘制协议至少包括预设的分割规则、各同心圆的单位旋转角度和绘制属性信息;
[0062]
s203,从各同心圆中确定用于存放所述元信息的同心圆作为元同心圆,且将剩余的同心圆作为内容同心圆;
[0063]
s204,根据所述元信息的长度和所述元同心圆的单位旋转角度,从所述目标数据序列中为所述元同心圆分配子数据序列,且将剩余的数据序列作为内容数据序列;
[0064]
s205,基于所述分割规则,根据内容同心圆的单位旋转角度,从所述内容数据序列中为内容同心圆分配对应的子数据序列;
[0065]
s206,根据各同心圆的绘制属性信息,将对应的子数据序列绘制在各同心圆上,得到目标数据内容对应的目标二维码。
[0066]
在本公开实施例中,还可设置元信息的存放位置,将用于存放元信息的同心圆作为元同心圆,将二维码中除元同心圆之外的同心圆作为内容同心圆,用于存放目标数据内容的编码结果;可根据元同心圆的单位旋转角度和元信息的长度,确定元同心圆上可放置数据的长度,并从目标数据序列的尾部选择该长度的数据作为元同心圆的子数据序列,且将目标数据序列中除该子数据序列之外剩余部分作为内容数据序列。
[0067]
基于分割规则,根据内容同心圆的单位旋转角度确定内容同心圆上的码元数量,并根据各内容同心圆上的码元数量,对内容数据序列进行分割,得到各内容同心圆的子数据序列。通过为元同心圆确定子数据序列,将剩余部分作为内容数据序列;并基于分割规则,将内容数据序列分配到内容同心圆上,不仅实现了对目标数据序列的有效分配,还能够兼顾二维码复杂度,从而满足二维码的安全性要求。
[0068]
在一种可选实施方式中,所述基于所述分割规则,根据内容同心圆的单位旋转角度,从所述内容数据序列中为内容同心圆分配对应的子数据序列,包括根据内容同心圆的单位旋转角度,确定内容同心圆上的码元数量,并根据所述码元数量为所述内容同心圆构建固定长度的内容数组;对所述内容数据序列中内容数据的索引号进行映射处理,并根据映射处理结果将所述内容数据分配到所述内容同心圆的内容数组中,且将所述内容同心圆的内容数组作为内容同心圆对应的子数据序列。
[0069]
其中,内容数组为固定长度数组,内容数组中元素的初始值可为空。针对每一内容同心圆,可将360
°
除以该内容同心圆的单位旋转角度,得到该内容同心圆上的码元数量;以码元数量为数组长度为该内容同心圆构建固定长度的内容数组。
[0070]
基于内容数据的索引号和内容数组之间的映射关系,对内容数据的索引号进行映射处理,并根据映射处理结果将内容数据分配到内容数组中。采用分配到的内容数据对内容数组中的元素进行赋值,并将经赋值的内容数组作为内容同心圆对应的子数据序列,使内容同心圆对应的子数据序列中的数据长度与内容同心圆上的码元数量一致。通过对内容数据的索引号进行映射处理,并根据映射处理结果将内容数据分配到内容数组中,能够提升内容数组的复杂度。
[0071]
在一种可选实施方式中,所述对所述内容数据序列中内容数据的索引号进行映射处理,并根据映射处理结果将所述内容数据分配到所述内容同心圆的内容数组中,包括:采用所述内容数据序列中内容数据的索引号对内容同心圆的数量取余,得到内容数据对应的数组序号;在所述数组序号所属的内容数组中存在未赋值元素的情况下,将所述内容数据分配到所述数组序号所属的内容数组中。
[0072]
针对内容数据序列中的每一内容数据,可根据该内容数据在内容数据序列中的索引号(即下标)对内容同心圆的数量取余,将余数作为该内容数据对应的数组序号;在该数组序号所属的内容数组中存在未赋值元素的情况下,可将该内容数据分配到该数组序号所属的内容数组。
[0073]
以各内容同心圆的单位旋转角度依次为8
°
、6
°
、6
°
和4
°
为例,可分别构建长度为45的内容数组arr0、长度为60的内容数组arr1、长度为60的内容数组arr2和长度为90的内容数组arr3;针对内容数据序列中的任一内容数据,若该内容数据的索引号(即下标)对内容
同心圆的数量取余结果为0,则内容数组arr0为该数组序号所属的内容数组;在内容数组arr0中存在未赋值元素的情况下,可将该内容数据分配到内容数组arr0。类似地,若该内容数据的取余结果为1、2、3,则内容数组arr1、内容数组arr2、内容数组arr3分别为该数组序号所属的内容数组。
[0074]
另外,在该数组序号所属的内容数组中元素均已赋值的情况下,将下一数组序号作为新数组序号以对该数组序号进行更新得到新数组序号,直至新数组序号所属的内容数组中存在未赋值元素,且将该内容数据分配到新数组序号所属的内容数组中。
[0075]
仍以分别内容数组arr0、内容数组arr1、内容数组arr2和内容数组arr3为例,若任一内容数据的索引号对内容同心圆的数量取余结果为0,则该内容数据对应的数组序号为0;在内容数组arr0中的元素均已赋值的情况下,可将1作为新数组序号;若内容数组arr1存在未赋值元素,则将该内容数据分配到内容数组arr1中;若内容数组arr1中元素均已赋值,可继续将2作为新数组序号,以此类推,直至新数组序号所属的内容数组中存在未赋值元素,将该内容数据分配到新数组序号所属的内容数组中。
[0076]
通过采用内容数据的索引号对内容同心圆的数量取余,得到内容数据对应的数组序号,并将内容数据分配到数组序号所属的内容数组中,实现了内容数据到内容数据之间的映射关系,提升了内容数组的复杂度。
[0077]
在一种可选实施方式中,所述方法还包括:在至少两个内容同心圆上的码元数量相同的情况下,还对所述至少两个内容同心圆的子数据序列进行交换。
[0078]
仍以各内容同心圆的单位旋转角度依次为8
°
、6
°
、6
°
和4
°
为例,分别内容数组arr0、内容数组arr1、内容数组arr2和内容数组arr3为例,内容数组arr1和内容数组arr2的长度相同,可将内容数组arr1与内容数组arr2进行交换,进一步提高二维码的复杂度。通过对内容同心圆的子数据序列进行交换,能够进一步提升二维码的复杂度,从而提高二维码的破解难度。
[0079]
本公开实施例提供的技术方案,通过根据元信息的长度和元同心圆的单位旋转角度,从目标数据序列中确定用于绘制在内容同心圆上的内容数据序列,并将内容数据序列中的内容数据分配到各内容同心圆上,得到各内容同心圆的子数据序列,能够提升各内容同心圆的子数据序列的复杂度,从而提高二维码的安全性。
[0080]
在一种可选实施方式中,所述根据所述元信息的长度和所述元同心圆的单位旋转角度,从所述目标数据序列中为所述元同心圆分配子数据序列,包括:根据元同心圆的单位旋转角度,确定元同心圆上的码元数量;将元同心圆上的码元数量减去所述元信息的长度,作为元同心圆上的数据长度;根据所述元同心圆上的数据长度,选择位于所述目标数据序列尾部的数据,且将选择的数据作为元同心圆的子数据序列。
[0081]
在元同心圆上既绘制数据内容,又绘制元信息的情况下,通过将元同心圆上的码元数量减去元信息的长度得到元同心圆上的数据长度,从目标数据序列的尾部截取数据,作为元同心圆上的子数据序列,将目标数据序列中的剩余数据作为内容数据序列,用于绘制到各内容同心圆上。
[0082]
在本公开实施例中可将元信息存放在二维码的最内层,各候选绘制协议中最内层的半径固定,通过定位点的位置可快速且准确地找到元信息的位置信息,进而找到元信息,避免因循环多次寻找位置而导致耗时和准确率的降低。除最内层外,在最外层也可存储一
份元信息作为备份,可通过目标绘制协议指定元信息在最外层的起始位置。通过在最外层对元信息进行备份,以防止最内层的元信息读取失败,从而便进一步地提高二维码的识别成功率。
[0083]
也就是说,最内层同心圆、最外层同心圆均为元同心圆。在最内层同心圆上可仅绘制元信息,从指定位置开始顺时针或逆时针绘制元信息。在最外层同心圆上的数据比特由数据信息和元信息组成,以元信息结尾。如最外层的绘制从0
°
开始到360
°
结束,这样最外层的32个元信息,每个占用4
°
,会分布在[232
°
,360
°
],其他位置上绘制数据信息。
[0084]
需要说明的是,目标数据序列不仅包括对目标数据内容的编码结果,还可包括根据指定纠错级别得到的纠错码。另外,还可采用多种掩码方式,对目标数据序列进行掩码运算得到掩码运算结果,选择得分最高的一种掩码方式对目标数据序列进行掩码处理。
[0085]
图3是根据本公开实施例提供的一种二维码的识别方法的流程图。该方法适用于在扫描二维码过程中进行二维码识别。该方法可以由二维码的识别装置执行,该装置可以采用软件和/或硬件的方式实现,并可集成于电子设备中。如图3所示,本实施例的图像识别的训练方法可以包括:
[0086]
s301,从二维码的扫描图像中提取二维码的元信息,并根据所述元信息确定二维码所采用的目标绘制协议;所述目标绘制协议至少包括预设的分割规则、各同心圆的单位旋转角度和绘制属性信息;
[0087]
s302,根据各同心圆的单位旋转角度和绘制属性信息,确定各同心圆对应的子数据序列;
[0088]
s303,基于预设的分割规则,根据所述各同心圆的单位旋转角度,对各同心圆对应的子数据序列进行分割后的恢复操作,得到二维码对应的目标数据序列;
[0089]
s304,对所述目标数据序列进行解码得到二维码对应的目标数据内容。
[0090]
在识别过程中,从二维码的扫描图像中提取元信息,并对元信息进行比特还原得到二维码在绘制过程中所采用的目标绘制协议,目标绘制协议至少包括预设的分割规则、各同心圆的单位旋转角度和绘制属性信息。分割规则用于将目标数据序列中的数据分配到各同心圆中;同心圆的单位旋转角度用于表征同心圆上单个码元所对应的旋转角度,根据同心圆的单位旋转角度可得到同心圆上的码元数量,例如各同心圆的单位旋转角度可从8
°
,6
°
,4
°
中灵活选择。同心圆的绘制属性信息可包括同心圆的半径、起始绘制位置、绘制方向等。
[0091]
通过根据同心圆的单位旋转角度和绘制属性信息,从二维码的扫描图像中读取同心圆的子数据序列;以及,基于分割规则,根据各同心圆的单位旋转角度,对各同心圆的子数据序列进行分割后的恢复操作,得到子数据序列中的数据在目标数据序列中的索引号,从而按照索引号对各数据进行排列得到目标数据序列。对目标数据序列进行解码得到二维码的对应的目标数据内容。
[0092]
通过根据元信息确定二维码的目标绘制协议,并根据目标绘制协议中各同心圆的绘制属性信息,确定各同心圆对应的子数据序列;基于目标绘制协议中预设的分割规则,根据各同心圆的单位旋转角度,对各同心圆对应的子数据序列进行分割后的恢复操作,得到二维码对应的目标数据序列,实现了对二维码的识别。
[0093]
本公开实施例提供的技术方案,通过从二维码的扫描图像中提取预设的分割规
则、各同心圆的单位旋转角度和绘制属性信息,根据各同心圆的单位旋转角度和绘制属性信息确定各同心圆对应的子数据序列;基于分割规则,根据各同心圆的单位旋转角度,对各同心圆对应的子数据序列进行分割后的恢复操作,得到二维码对应的目标数据序列,实现了对二维码的识别。
[0094]
图4是根据本公开实施例提供的另一种二维码的识别方法的流程图。参见图4,本实施例的二维码的识别方法可以包括:
[0095]
s401,从二维码的扫描图像中提取二维码的元信息,并根据所述元信息确定二维码所采用的目标绘制协议;所述目标绘制协议至少包括预设的分割规则、各同心圆的单位旋转角度和绘制属性信息;
[0096]
s402,根据各同心圆的单位旋转角度和绘制属性信息,确定各同心圆对应的子数据序列;
[0097]
s403,基于所述分割规则,根据内容同心圆的单位旋转角度,对各内容同心圆对应的子数据序列进行分割后的恢复操作,得到内容数据序列;所述内容同心圆为除元同心圆之外的同心圆;所述元同心圆为用于存放所述元信息的同心圆;
[0098]
s404,对所述内容数据序列和元同心圆的子数据序列进行组合,得到二维码对应的目标数据序列;
[0099]
s405,对所述目标数据序列进行解码得到二维码对应的目标数据内容。
[0100]
在本公开实施例中,将用于存放元信息的同心圆作为元同心圆,将二维码中除元同心圆之外的同心圆作为内容同心圆,用于存放目标数据内容的编码结果。可根据元同心圆的单位旋转角度,确定元同心圆上的码元数量,将码元数量减去元信息的长度得到元同心圆上的子数据序列的长度,结合元同心圆的起始绘制位置、绘制方向等,可得到元同心圆上的子数据序列。
[0101]
并且,根据内容同心圆的单位旋转角度确定内容同心圆上的码元数量;基于分割规则,根据各内容同心圆上的码元数量,对各内容同心圆对应的子数据序列进行分割后的恢复操作,得到子数据序列中的数据在目标数据序列中的索引号,从而按照索引号对各数据进行排列得到目标数据序列,实现了对二维码的识别。
[0102]
在一种可选实施方式中,所述基于所述分割规则,根据内容同心圆的单位旋转角度,对各内容同心圆对应的子数据序列进行分割后的恢复操作,得到内容数据序列,包括:确定各内容同心圆对应的子数据序列的总长度,并根据所述总长度构建辅助数据序列;根据内容同心圆的单位旋转角度,确定内容同心圆上的码元数量,并根据所述码元数量为所述内容同心圆构建固定长度的辅助数组;对所述辅助数据序列中辅助数据的索引号进行映射处理,并根据映射处理结果将所述辅助数据分配到所述内容同心圆的辅助数组中,得到辅助数组中元素在辅助数据序列中的索引号,作为对应子数据序列中内容数据在内容数据序列中的索引号;根据所述子数据序列中内容数据在内容数据序列中的索引号,对内容数据进行排列,得到内容数据序列。
[0103]
在本公开实施例中,辅助数据序列的长度为各自数据序列的总长度,与内容数据序列的长度相同。辅助数组为固定长度数组,辅助数组中元素的初始值可为空。基于分割规则,将辅助数据序列中的辅助数据分配到辅助数组中得到辅助数组中各元素在辅助数据序列中的索引号,作为子数据序列中内容数据在内容数据序列中的索引号,按照索引号对各
内容数据进行排列得到内容数据序列。
[0104]
针对每一内容同心圆,可将360
°
除以该内容同心圆的单位旋转角度,得到该内容同心圆上的码元数量;以码元数量为数组长度为该内容同心圆构建固定长度的辅助数组。
[0105]
基于辅助数据的索引号和辅助数组之间的映射关系,对辅助数据的索引号进行映射处理,并根据映射处理结果将辅助数据分配到辅助数组中,可得到辅助数组中各元素的索引号,作为对应子数据序列中内容数据的索引号,并根据内容数据的索引号对内容数据进行排列即可得到内容数据序列。例如各内容数据的索引号分别为m、n

,按照索引号由小到大的顺序依次对各内容数据进行排序即可得到内容数据序列。通过上述处理能够实现对二维码的识别。
[0106]
在一种可选实施方式中,所述对所述辅助数据序列中辅助数据的索引号进行映射处理,并根据映射处理结果将所述辅助数据分配到所述内容同心圆的辅助数组中,包括:采用所述辅助数据序列内辅助数据的索引号对内容同心圆的数量取余,得到辅助数据对应的数组序号;在所述数组序号所属的辅助数组中存在未赋值元素的情况下,将所述辅助数据分配到所述数组序号所属的辅助数组中。
[0107]
针对辅助数据序列中的每一辅助数据,可根据该辅助数据在辅助数据序列中的索引号(即下标)对内容同心圆的数量取余,将余数作为该辅助数据对应的数组序号;在该数组序号所属的辅助数组中存在未赋值元素的情况下,可将该辅助数据分配到该数组序号所属的辅助数组。
[0108]
以各内容同心圆的单位旋转角度依次为8
°
、6
°
、6
°
和4
°
为例,可分别构建长度为45的辅助数组arr0、长度为60的辅助数组arr1、长度为60的辅助数组arr2和长度为90的辅助数组arr3;针对辅助数据序列中的任一辅助数据,若该辅助数据的索引号对内容同心圆的数量取余结果为0,则辅助数组arr0为该数组序号所属的辅助数组;在辅助数组arr0中存在未赋值元素的情况下,可将该辅助数据分配到辅助数组arr0。类似地,若该辅助数据的取余结果为1、2、3,则辅助数组arr1、辅助数组arr2、辅助数组arr3分别为该数组序号所属的辅助数组。
[0109]
另外,在该数组序号所属的辅助数组中元素均已赋值的情况下,将下一数组序号作为新数组序号以对该数组序号进行更新得到新数组序号,直至新数组序号所属的辅助数组中存在未赋值元素,将该辅助数据分配到新数组序号所属的内容数组中。
[0110]
通过采用辅助数据的索引号对内容同心圆的数量取余,得到辅助数据对应的数组序号,并将辅助数据分配到数组序号所属的辅助数组中,从而得到子数据序列中内容数据的索引号,从而根据内容数据的索引号恢复内容数据序列,提高了二维码的识别成功率。
[0111]
在一种可选实施方式中,还包括:在至少两个内容同心圆上的码元数量相同的情况下,还对所述至少两个内容同心圆的子数据序列进行交换。在二维码的生成过程中对至少两个内容同心圆的子数据序列进行交换的情况下,在二维码的识别过程中通过对至少两个内容同心圆的子数据序列进行交换,能够得到子数据序列中数据内容的准确顺序,从而得到准确的目标数据序列。
[0112]
本公开实施例提供的技术方案,通过根据元信息的长度和元同心圆的单位旋转角度确定元同心圆的子数据序列;基于分割规则,根据内容同心圆的单位旋转角度,对各内容同心圆对应的子数据序列进行分割后的恢复操作,得到内容数据在内容数据序列中的索引
号,并按照索引号对内容数据进行排列得到内容数据序列,根据内容数据序列和元同心圆的子数据序列得到目标数据序列,实现了对目标数据序列的恢复,从而提高二维码的识别成功率。
[0113]
在一种可选实施方式中,所述根据各同心圆的单位旋转角度和绘制属性信息,确定各同心圆对应的子数据序列,包括:根据元同心圆的单位旋转角度,确定元同心圆上的码元数量;所述元同心圆为用于存放所述元信息的同心圆;将元同心圆上的码元数量减去所述元信息的长度,作为元同心圆上的数据长度;根据所述元同心圆上的数据长度,从元同心圆上提取元同心圆的子数据序列。
[0114]
在元同心圆上既绘制数据内容,又绘制元信息的情况下,通过将元同心圆上的码元数量减去元信息的长度得到元同心圆上的数据长度;按照元同心圆的起始绘制位置、绘制方向,即可读取元同心圆上的子数据序列和元信息。另外需要说明的是,在二维码的最内层只绘制元信息的情况下,可从最内层读取元信息,最内层的子数据序列为空。通过对元信息进行备份,能够提高二维码的识别成功率。
[0115]
图5a是根据本公开实施例提供的另一种二维码的识别方法的流程图。参见图5a,本实施例的二维码的识别方法可以包括:
[0116]
s501,从二维码的扫描图像中分别提取目标定位点,并根据所述目标定位点构建目标三角形;
[0117]
s502,从二维码的原图像中分别提取原定位点,并根据原定位点构建原三角形;所述原三角形为三个原定位点构成的等腰直角三角形;
[0118]
s503,确定所述目标三角形和所述原三角形之间的仿射变换矩阵,并采用所述仿射变换矩阵对所述目标三角形中的点进行线性还原;
[0119]
s504,确定所述目标三角形和所述原三角形之间的畸变矢量,并根据所述畸变矢量对所述目标三角形中的点进行畸变还原;
[0120]
s505,从二维码的扫描图像中提取二维码的元信息,并根据所述元信息确定二维码所采用的目标绘制协议;所述目标绘制协议至少包括预设的分割规则、各同心圆的单位旋转角度和绘制属性信息;
[0121]
s506,根据各同心圆的单位旋转角度和绘制属性信息,确定各同心圆对应的子数据序列;
[0122]
s507,基于预设的分割规则,根据所述各同心圆的单位旋转角度,对各同心圆对应的子数据序列进行分割后的恢复操作,得到二维码对应的目标数据序列;
[0123]
s508,对所述目标数据序列进行解码得到二维码对应的目标数据内容。
[0124]
其中,仿射变换矩阵用于消除线性变换部分的畸变,畸变矢量用于消除非线性变换部分的畸变。
[0125]
图5b是根据本公开实施例提供的一种二维码的示意图,参考图5b,二维码包括四个定位点,其中三个定位点用于绘制定位图案可称为主定位点51,一个定位点用于绘制辅助图案可称为辅助定位点52,例如二维码所有者的logo(标志)图案。主定位点可设置于二维码中0
°
、90
°
和180
°
处,主定位点的圆心位置和主定位点的比例可设置为1:1:2。辅助定位点可设置于二维码中270
°
处,辅助定位点的圆心位置和辅助定位的半径可预先设定。
[0126]
在识别过程中,可从二维码的扫描图像中提取主定位点、辅助定位点,作为目标定
位点,选择任意三个目标定位点构建目标三角形,例如选择三个主定位点构建目标三角形。相应地,可从二维码的原图像中选择对应三个原定位点构建原三角形,例如也选择三个主定位点构建原三角形。
[0127]
示例性的,可通过如下公式,根据目标三角形中三个目标定位点的坐标和原三角形中三个原定位点的坐标构建目标三角形和原三角形之间的仿射变换矩阵:
[0128]
示例性的,可通过如下公式,根据目标三角形中三个目标定位点的坐标和原三角形中三个原定位点的坐标构建目标三角形和原三角形之间的仿射变换矩阵:
[0129][0130]
其中,(x,y)原定位点的坐标,(x',y')为对应目标定位点的坐标,为原定位点的仿射变换矩阵,其中,a、b、c、d和t的值固定,可求解得到。采用仿射变换矩阵,对目标三角形中的点进行线性还原。
[0131]
针对目标三角形中的任一点p的坐标(x
p
',y
p
'),还确定该点的畸变矢量(δx
p
,δy
p
)并将(x
p
'+δx
p
,y
p
'+δy
p
)作为对该点的畸变还原结果。
[0132]
通过采用仿射变换矩阵对目标三角形中的点进行线性还原,以及,采用畸变矢量对目标三角形中的点进行畸变还原,提供了一种采用三个定位点对二维码进行畸变还原的新方式,能够提高二维码的准确性,从而提高后续识别的成功率。
[0133]
在一种可选实施方式中,所述确定所述目标三角形和所述原三角形之间的畸变矢量,并根据所述畸变矢量对所述目标三角形中的点进行畸变还原,包括:对目标三角形中的第一目标边和原三角形中的第一原边进行缩放对齐;根据目标三角形中的第二目标边和原三角形中的第二原边确定第二目标边上采样点的畸变矢量,并根据目标三角形中的第三目标边和原三角形中的第三原边确定第三目标边上采样点的畸变矢量;针对目标三角形内的任一目标点,根据第二目标边上采样点的畸变矢量和第三目标边上采样点的畸变矢量,确定该目标点的畸变矢量;采用该目标点的畸变矢量,对该目标点进行畸变还原。
[0134]
图5c和图5d分别是根据本公开实施例提供的一种目标三角形的示意图和原三角形的示意图。结合图5c和图5d,在目标三角形a1b1c1中,可将直角边a1b1作为第一目标边,a1c1边和b1c1边依次作为第二目标边和第三目标边;相应地,在原三角形abc中,可将直角边ab作为第一原边,ac边和bc边依次作为第二原边和第三原边。对第一目标边的长度进行缩放,使经缩放后的第一目标边的长度与第一原边的长度相同,即实现第一目标边和第一原边之间的对齐。
[0135]
基于采样规则,分别对第二目标边和第二原边进行采样,得到采样点在第二目标边上的目标坐标和采样点在第二原边上的原坐标,并根据采样点的目标坐标和原坐标之间的差值得到采样点的畸变矢量;以及,分别对第三目标边和第三原边进行采样,得到采样点在第三目标边上的目标坐标和采样点在第三原边上的原坐标,并根据采样点的目标坐标和原坐标之间的差值得到采样点的畸变矢量。
[0136]
针对目标三角形内的任一目标点,可通过对第二目标边上采样点的畸变矢量和第
三目标边上采样点的畸变矢量进行插值计算,得到该目标点的畸变矢量;采用该目标点的畸变矢量,对该目标点进行畸变还原。通过分别确定第二目标边上采样点的畸变矢量和第三目标边上采样点的畸变矢量,并对第二目标边上采样点的畸变矢量和第三目标边上采样点的畸变矢量进行插值计算,得到目标三角形内中任一目标点的畸变矢量,能够提高目标点的畸变矢量的准确性。
[0137]
在一种可选实施方式中,所述根据第二目标边上采样点的畸变矢量和第三目标边上采样点的畸变矢量,确定该目标点的畸变矢量,包括:从第二目标边上选择与该目标点匹配的采样点作为第一采样点,并从第三目标边上选择与该目标点匹配的采样点作为第二采样点;根据该目标点的坐标、第一采样点的坐标和第二采样点的坐标,对第一采样点的畸变矢量和第二采样点的畸变矢量进行插值,得到该目标点的畸变矢量。
[0138]
参考图5c,针对目标三角形中的任一点p的坐标(x
p
',y
p
'),按照该点的横坐标x
p
',从第二目标边上选择与该目标点匹配的采样点作为第一采样点q,以及从第三目标边上选择与该目标点匹配的采样点作为第二采样点r,也就是说该点p、第一采样点q、第二采样点r的横坐标相同。
[0139]
对第一采样点q的畸变矢量和第二采样点r的畸变矢量进行插值,得到该点p的畸变矢量。具体的,根据第一采样点q的y轴坐标yq与第二采样点r的y轴坐标yr之间的差值,对第一采样点q在x轴方向上的畸变矢量δxq和第二采样点r在x轴方向上的畸变矢量δxr进行插值,得到该点p在x轴方向上的畸变矢量δx
p
;以及,对第一采样点q在y轴方向上的畸变矢量δyq和第二采样点r在y轴方向上的畸变矢量δyr进行插值,得到该点p在y轴方向上的畸变矢量δy
p
,即得到该点p的畸变矢量(δx
p
,δy
p
)。
[0140]
通过分别确定与该目标点匹配的第一采样点和第二采样点,并对第一采样点和第二采样点的畸变矢量进行插值得到该目标点的畸变矢量,能够提高畸变矢量的准确性。
[0141]
需要说明的是,本公开实施例对目标三角形的构建方式不做具体限定,任意三个定位点均可构成目标三角形。可通过多次畸变还原,并在畸变还原后采用二维码中预设的校正图案进行验证,以进一步提高二维码的准确性。
[0142]
本公开实施例提供的技术方案,提供了一种采用三个定位点对二维码进行畸变还原的新方式,能够提高二维码的准确性,从而提高二维码的识别成功率。
[0143]
图6是根据本公开实施例提供的一种二维码的生成装置的结构示意图。本实施例适用于为目标数据内容构建二维码的情况。该装置可以采用软件和/或硬件的方式实现。如图6所示,本实施例的二维码的生成装置600可以包括:
[0144]
内容编码模块610,用于对待绘制的目标数据内容进行编码得到经编码的目标数据序列;
[0145]
元信息模块620,用于根据从候选绘制协议中选择的目标绘制协议,确定二维码的元信息;所述目标绘制协议至少包括预设的分割规则、各同心圆的单位旋转角度和绘制属性信息;
[0146]
数据分割模块630,用于基于所述分割规则,根据各同心圆的单位旋转角度和所述元信息,对所述目标数据序列进行分割得到各同心圆对应的子数据序列;
[0147]
绘制模块640,用于根据各同心圆的绘制属性信息,将对应的子数据序列绘制在各同心圆上,得到目标数据内容对应的目标二维码。
[0148]
在一种可选实施方式中,所述数据分割模块630包括:
[0149]
同心圆单元,用于从各同心圆中确定用于存放所述元信息的同心圆作为元同心圆,且将剩余的同心圆作为内容同心圆;
[0150]
目标序列拆分单元,用于根据所述元信息的长度和所述元同心圆的单位旋转角度,从所述目标数据序列中为所述元同心圆分配子数据序列,且将剩余的数据序列作为内容数据序列;
[0151]
内容序列分割单元,用于基于所述分割规则,根据内容同心圆的单位旋转角度,从所述内容数据序列中为内容同心圆分配对应的子数据序列。
[0152]
在一种可选实施方式中,所述内容序列分割单元包括:
[0153]
内容数组子单元,用于根据内容同心圆的单位旋转角度,确定内容同心圆上的码元数量,并根据所述码元数量为所述内容同心圆构建固定长度的内容数组;
[0154]
索引映射子单元,用于对所述内容数据序列中内容数据的索引号进行映射处理,并根据映射处理结果将所述内容数据分配到所述内容同心圆的内容数组中,且将所述内容同心圆的内容数组作为内容同心圆对应的子数据序列。
[0155]
在一种可选实施方式中,所述索引映射子单元具体用于:
[0156]
采用所述内容数据序列中内容数据的索引号对内容同心圆的数量取余,得到内容数据对应的数组序号;
[0157]
在所述数组序号所属的内容数组中存在未赋值元素的情况下,将所述内容数据分配到所述数组序号所属的内容数组中。
[0158]
在一种可选实施方式中,所述内容序列分割单元还包括:
[0159]
交换子单元,用于在至少两个内容同心圆上的码元数量相同的情况下,还对所述至少两个内容同心圆的子数据序列进行交换。
[0160]
在一种可选实施方式中,所述目标序列拆分单元包括:
[0161]
码元数量子单元,用于根据元同心圆的单位旋转角度,确定元同心圆上的码元数量;
[0162]
数据长度子单元,用于将元同心圆上的码元数量减去所述元信息的长度,作为元同心圆上的数据长度;
[0163]
序列拆分子单元,用于根据所述元同心圆上的数据长度,选择位于所述目标数据序列尾部的数据,且将选择的数据作为元同心圆的子数据序列。
[0164]
在一种可选实施方式中,所述元信息模块620包括:
[0165]
协议编码单元,用于针对候选绘制协议中的每一协议项,根据目标绘制协议的协议内容在该协议项中的序号,确定该协议项的编码信息;
[0166]
元信息单元,用于按照各协议项之间的预设顺序,对各协议项的编码信息进行排列,得到二维码的元信息。
[0167]
本公开实施例的技术方案,通过根据从候选绘制协议中选择的目标绘制协议确定元信息,根据元信息的长度和元同心圆的单位旋转角度,从目标数据序列中确定用于绘制在内容同心圆上的内容数据序列,并将内容数据序列中的内容数据分配到各内容同心圆上,得到各内容同心圆的子数据序列,能够提升各内容同心圆的子数据序列的复杂度,从而提高二维码的安全性。
[0168]
图7是根据本公开实施例提供的一种二维码的识别装置的结构示意图。本实施例适用于在扫描二维码过程中进行二维码识别。该装置可以采用软件和/或硬件的方式实现。如图7所示,本实施例的二维码的识别装置700可以包括:
[0169]
目标协议模块710,用于从二维码的扫描图像中提取二维码的元信息,并根据所述元信息确定二维码所采用的目标绘制协议;所述目标绘制协议至少包括预设的分割规则、各同心圆的单位旋转角度和绘制属性信息;
[0170]
子数据序列模块720,用于根据各同心圆的单位旋转角度和绘制属性信息,确定各同心圆对应的子数据序列;
[0171]
目标数据序列模块730,用于基于预设的分割规则,根据所述各同心圆的单位旋转角度,对各同心圆对应的子数据序列进行分割后的恢复操作,得到二维码对应的目标数据序列;
[0172]
目标数据内容模块740,用于对所述目标数据序列进行解码得到二维码对应的目标数据内容。
[0173]
在一种可选实施方式中,所述目标数据序列模块730包括:
[0174]
内容序列恢复单元,用于基于所述分割规则,根据内容同心圆的单位旋转角度,对各内容同心圆对应的子数据序列进行分割后的恢复操作,得到内容数据序列;所述内容同心圆为除元同心圆之外的同心圆;所述元同心圆为用于存放所述元信息的同心圆;
[0175]
目标数据序列单元,用于对所述内容数据序列和元同心圆的子数据序列进行组合,得到二维码对应的目标数据序列。
[0176]
在一种可选实施方式中,所述内容序列恢复单元包括:
[0177]
辅助序列子单元,用于确定各内容同心圆对应的子数据序列的总长度,并根据所述总长度构建辅助数据序列;
[0178]
辅助数组子单元,用于根据内容同心圆的单位旋转角度,确定内容同心圆上的码元数量,并根据所述码元数量为所述内容同心圆构建固定长度的辅助数组;
[0179]
辅助索引号子单元,用于对所述辅助数据序列中辅助数据的索引号进行映射处理,并根据映射处理结果将所述辅助数据分配到所述内容同心圆的辅助数组中,得到辅助数组中元素在辅助数据序列中的索引号,作为对应子数据序列中内容数据在内容数据序列中的索引号;
[0180]
内容序列恢复子单元,用于根据所述子数据序列中内容数据在内容数据序列中的索引号,对各子数据序列内的内容数据进行排列,得到内容数据序列。
[0181]
在一种可选实施方式中,所述辅助索引号子单元具体用于:
[0182]
采用所述辅助数据序列内辅助数据的索引号对内容同心圆的数量取余,得到辅助数据对应的数组序号;
[0183]
在所述数组序号所属的辅助数组中存在未赋值元素的情况下,将所述辅助数据分配到所述数组序号所属的辅助数组中。
[0184]
在一种可选实施方式中,内容序列恢复单元还包括:
[0185]
交换子单元,用于在至少两个内容同心圆上的码元数量相同的情况下,还对所述至少两个内容同心圆的子数据序列进行交换。
[0186]
在一种可选实施方式中,所述子数据序列模块720包括:
[0187]
元码元数量单元,用于根据元同心圆的单位旋转角度,确定元同心圆上的码元数量;所述元同心圆为用于存放所述元信息的同心圆;
[0188]
元数据长度单元,用于将元同心圆上的码元数量减去所述元信息的长度,作为元同心圆上的数据长度;
[0189]
元子数据序列单元,用于根据所述元同心圆上的数据长度,从元同心圆上提取元同心圆的子数据序列。
[0190]
在一种可选实施方式中,上述二维码的识别装置700还包括畸变还原模块,所述畸变还原模块包括:
[0191]
目标三角形单元,用于从二维码的扫描图像中分别提取目标定位点,并根据所述目标定位点构建目标三角形;
[0192]
原三角形单元,用于从二维码的原图像中分别提取原定位点,并根据原定位点构建原三角形;所述原三角形为三个原定位点构成的等腰直角三角形;
[0193]
线性还原单元,用于确定所述目标三角形和所述原三角形之间的仿射变换矩阵,并采用所述仿射变换矩阵对所述目标三角形中的点进行线性还原;
[0194]
畸变还原单元,用于确定所述目标三角形和所述原三角形之间的畸变矢量,并根据所述畸变矢量对所述目标三角形中的点进行畸变还原。
[0195]
在一种可选实施方式中,所述畸变还原单元包括:
[0196]
对齐子单元,用于对目标三角形中的第一目标边和原三角形中的第一原边进行缩放对齐;
[0197]
采样畸变子单元,用于根据目标三角形中的第二目标边和原三角形中的第二原边确定第二目标边上采样点的畸变矢量,并根据目标三角形中的第三目标边和原三角形中的第三原边确定第三目标边上采样点的畸变矢量;
[0198]
目标畸变子单元,用于针对目标三角形内的任一目标点,根据第二目标边上采样点的畸变矢量和第三目标边上采样点的畸变矢量,确定该目标点的畸变矢量;
[0199]
畸变还原子单元,用于采用该目标点的畸变矢量,对该目标点进行畸变还原。
[0200]
在一种可选实施方式中,所述目标畸变子单元具体用于:
[0201]
从第二目标边上选择与该目标点匹配的采样点作为第一采样点,并从第三目标边上选择与该目标点匹配的采样点作为第二采样点;
[0202]
根据该目标点的坐标、第一采样点的坐标和第二采样点的坐标,对第一采样点的畸变矢量和第二采样点的畸变矢量进行插值,得到该目标点的畸变矢量。
[0203]
本公开实施例的技术方案,通过从二维码的扫描图像中提取预设的分割规则、各同心圆的单位旋转角度和绘制属性信息,根据各同心圆的单位旋转角度和绘制属性信息确定各同心圆对应的子数据序列;基于分割规则,根据各同心圆的单位旋转角度,对各同心圆对应的子数据序列进行分割后的恢复操作,得到二维码对应的目标数据序列,实现了对二维码的识别;以及,还提供了一种采用三个定位点对二维码进行畸变还原的新方式,能够提高二维码的准确性,从而提高二维码的识别成功率。
[0204]
本公开的技术方案中,所涉及的用户个人信息的获取,存储和应用等,均符合相关法律法规的规定,且不违背公序良俗。
[0205]
根据本公开的实施例,本公开还提供了一种电子设备、一种可读存储介质和一种
计算机程序产品。
[0206]
图8是用来实现本公开实施例的二维码的生成方法或二维码的识别方法的电子设备的框图。
[0207]
图8示出了可以用来实施本公开的实施例的示例电子设备800的示意性框图。电子设备旨在表示各种形式的数字计算机,诸如,膝上型计算机、台式计算机、工作台、个人数字助理、服务器、刀片式服务器、大型计算机、和其它适合的计算机。电子设备还可以表示各种形式的移动装置,诸如,个人数字处理、蜂窝电话、智能电话、可穿戴设备和其它类似的计算装置。本文所示的部件、它们的连接和关系、以及它们的功能仅仅作为示例,并且不意在限制本文中描述的和/或者要求的本公开的实现。
[0208]
如图8所示,电子设备800包括计算单元801,其可以根据存储在只读存储器(rom)802中的计算机程序或者从存储单元808加载到随机访问存储器(ram)803中的计算机程序,来执行各种适当的动作和处理。在ram 803中,还可存储电子设备800操作所需的各种程序和数据。计算单元801、rom 802以及ram 803通过总线804彼此相连。输入/输出(i/o)接口805也连接至总线804。
[0209]
电子设备800中的多个部件连接至i/o接口805,包括:输入单元806,例如键盘、鼠标等;输出单元807,例如各种类型的显示器、扬声器等;存储单元808,例如磁盘、光盘等;以及通信单元809,例如网卡、调制解调器、无线通信收发机等。通信单元809允许电子设备800通过诸如因特网的计算机网络和/或各种电信网络与其他设备交换信息/数据。
[0210]
计算单元801可以是各种具有处理和计算能力的通用和/或专用处理组件。计算单元801的一些示例包括但不限于中央处理单元(cpu)、图像处理单元(gpu)、各种专用的人工智能(ai)计算芯片、各种运行机器学习模型算法的计算单元、数字信号处理器(dsp)、以及任何适当的处理器、控制器、微控制器等。计算单元801执行上文所描述的各个方法和处理,例如二维码的生成方法或二维码的识别方法。例如,在一些实施例中,二维码的生成方法或二维码的识别方法可被实现为计算机软件程序,其被有形地包含于机器可读介质,例如存储单元808。在一些实施例中,计算机程序的部分或者全部可以经由rom 802和/或通信单元809而被载入和/或安装到电子设备800上。当计算机程序加载到ram 803并由计算单元801执行时,可以执行上文描述的二维码的生成方法或二维码的识别方法的一个或多个步骤。备选地,在其他实施例中,计算单元801可以通过其他任何适当的方式(例如,借助于固件)而被配置为执行二维码的生成方法或二维码的识别方法。
[0211]
本文中以上描述的系统和技术的各种实施方式可以在数字电子电路系统、集成电路系统、现场可编程门阵列(fpga)、专用集成电路(asic)、专用标准产品(assp)、芯片上系统的系统(soc)、复杂可编程逻辑设备(cpld)、计算机硬件、固件、软件、和/或它们的组合中实现。这些各种实施方式可以包括:实施在一个或者多个计算机程序中,该一个或者多个计算机程序可在包括至少一个可编程处理器的可编程系统上执行和/或解释,该可编程处理器可以是专用或者通用可编程处理器,可以从存储系统、至少一个输入装置、和至少一个输出装置接收数据和指令,并且将数据和指令传输至该存储系统、该至少一个输入装置、和该至少一个输出装置。
[0212]
用于实施本公开的方法的程序代码可以采用一个或多个编程语言的任何组合来编写。这些程序代码可以提供给通用计算机、专用计算机或其他可编程数据处理装置的处
理器或控制器,使得程序代码当由处理器或控制器执行时使流程图和/或框图中所规定的功能/操作被实施。程序代码可以完全在机器上执行、部分地在机器上执行,作为独立软件包部分地在机器上执行且部分地在远程机器上执行或完全在远程机器或服务器上执行。
[0213]
在本公开的上下文中,机器可读介质可以是有形的介质,其可以包含或存储以供指令执行系统、装置或设备使用或与指令执行系统、装置或设备结合地使用的程序。机器可读介质可以是机器可读信号介质或机器可读储存介质。机器可读介质可以包括但不限于电子的、磁性的、光学的、电磁的、红外的、或半导体系统、装置或设备,或者上述内容的任何合适组合。机器可读存储介质的更具体示例会包括基于一个或多个线的电气连接、便携式计算机盘、硬盘、随机存取存储器(ram)、只读存储器(rom)、可擦除可编程只读存储器(eprom或快闪存储器)、光纤、便捷式紧凑盘只读存储器(cd-rom)、光学储存设备、磁储存设备、或上述内容的任何合适组合。
[0214]
为了提供与用户的交互,可以在计算机上实施此处描述的系统和技术,该计算机具有:用于向用户显示信息的显示装置(例如,crt(阴极射线管)或者lcd(液晶显示器)监视器);以及键盘和指向装置(例如,鼠标或者轨迹球),用户可以通过该键盘和该指向装置来将输入提供给计算机。其它种类的装置还可以用于提供与用户的交互;例如,提供给用户的反馈可以是任何形式的传感反馈(例如,视觉反馈、听觉反馈、或者触觉反馈);并且可以用任何形式(包括声输入、语音输入或者、触觉输入)来接收来自用户的输入。
[0215]
可以将此处描述的系统和技术实施在包括后台部件的计算系统(例如,作为数据服务器)、或者包括中间件部件的计算系统(例如,应用服务器)、或者包括前端部件的计算系统(例如,具有图像用户界面或者网络浏览器的用户计算机,用户可以通过该图像用户界面或者该网络浏览器来与此处描述的系统和技术的实施方式交互)、或者包括这种后台部件、中间件部件、或者前端部件的任何组合的计算系统中。可以通过任何形式或者介质的数字数据通信(例如,通信网络)来将系统的部件相互连接。通信网络的示例包括:局域网(lan)、广域网(wan)和互联网。
[0216]
计算机系统可以包括客户端和服务器。客户端和服务器一般远离彼此并且通常通过通信网络进行交互。通过在相应的计算机上运行并且彼此具有客户端-服务器关系的计算机程序来产生客户端和服务器的关系。服务器可以是云服务器,也可以为分布式系统的服务器,或者是结合了区块链的服务器。
[0217]
人工智能是研究使计算机来模拟人的某些思维过程和智能行为(如学习、推理、思考、规划等)的学科,既有硬件层面的技术也有软件层面的技术。人工智能硬件技术一般包括如传感器、专用人工智能芯片、云计算、分布式存储、大数据处理等技术;人工智能软件技术主要包括计算机视觉技术、语音识别技术、自然语言处理技术及机器学习/深度学习技术、大数据处理技术、知识图谱技术等几大方向。
[0218]
云计算(cloud computing),指的是通过网络接入弹性可扩展的共享物理或虚拟资源池,资源可以包括服务器、操作系统、网络、软件、应用和存储设备等,并可以按需、自服务的方式对资源进行部署和管理的技术体系。通过云计算技术,可以为人工智能、区块链等技术应用、模型训练提供高效强大的数据处理能力。
[0219]
应该理解,可以使用上面所示的各种形式的流程,重新排序、增加或删除步骤。例如,本发公开中记载的各步骤可以并行地执行也可以顺序地执行也可以不同的次序执行,
只要能够实现本公开公开的技术方案所期望的结果,本文在此不进行限制。
[0220]
上述具体实施方式,并不构成对本公开保护范围的限制。本领域技术人员应该明白的是,根据设计要求和其他因素,可以进行各种修改、组合、子组合和替代。任何在本公开的精神和原则之内所作的修改、等同替换和改进等,均应包含在本公开保护范围之内。

技术特征:
1.一种二维码的生成方法,包括:对待绘制的目标数据内容进行编码得到经编码的目标数据序列;根据从候选绘制协议中选择的目标绘制协议,确定二维码的元信息;所述目标绘制协议至少包括预设的分割规则、各同心圆的单位旋转角度和绘制属性信息;基于所述分割规则,根据各同心圆的单位旋转角度和所述元信息,对所述目标数据序列进行分割得到各同心圆对应的子数据序列;根据各同心圆的绘制属性信息,将对应的子数据序列绘制在各同心圆上,得到目标数据内容对应的目标二维码。2.根据权利要求1所述的方法,其中,所述基于所述分割规则,根据各同心圆的单位旋转角度和所述元信息,对所述目标数据序列进行分割得到各同心圆对应的子数据序列,包括:从各同心圆中确定用于存放所述元信息的同心圆作为元同心圆,且将剩余的同心圆作为内容同心圆;根据所述元信息的长度和所述元同心圆的单位旋转角度,从所述目标数据序列中为所述元同心圆分配子数据序列,且将剩余的数据序列作为内容数据序列;基于所述分割规则,根据内容同心圆的单位旋转角度,从所述内容数据序列中为内容同心圆分配对应的子数据序列。3.根据权利要求2所述的方法,其中,所述基于所述分割规则,根据内容同心圆的单位旋转角度,从所述内容数据序列中为内容同心圆分配对应的子数据序列,包括:根据内容同心圆的单位旋转角度,确定内容同心圆上的码元数量,并根据所述码元数量为所述内容同心圆构建固定长度的内容数组;对所述内容数据序列中内容数据的索引号进行映射处理,并根据映射处理结果将所述内容数据分配到所述内容同心圆的内容数组中,且将所述内容同心圆的内容数组作为内容同心圆对应的子数据序列。4.根据权利要求3所述的方法,其中,所述对所述内容数据序列中内容数据的索引号进行映射处理,并根据映射处理结果将所述内容数据分配到所述内容同心圆的内容数组中,包括:采用所述内容数据序列中内容数据的索引号对内容同心圆的数量取余,得到内容数据对应的数组序号;在所述数组序号所属的内容数组中存在未赋值元素的情况下,将所述内容数据分配到所述数组序号所属的内容数组中。5.根据权利要求3所述的方法,还包括:在至少两个内容同心圆上的码元数量相同的情况下,还对所述至少两个内容同心圆的子数据序列进行交换。6.根据权利要求2所述的方法,其中,所述根据所述元信息的长度和所述元同心圆的单位旋转角度,从所述目标数据序列中为所述元同心圆分配子数据序列,包括:根据元同心圆的单位旋转角度,确定元同心圆上的码元数量;将元同心圆上的码元数量减去所述元信息的长度,作为元同心圆上的数据长度;根据所述元同心圆上的数据长度,选择位于所述目标数据序列尾部的数据,且将选择
的数据作为元同心圆的子数据序列。7.根据权利要求1所述的方法,其中,所述根据从候选绘制协议中选择的目标绘制协议,确定二维码的元信息,包括:针对候选绘制协议中的每一协议项,根据目标绘制协议的协议内容在该协议项中的序号,确定该协议项的编码信息;按照各协议项之间的预设顺序,对各协议项的编码信息进行排列,得到二维码的元信息。8.一种二维码的识别方法,包括:从二维码的扫描图像中提取二维码的元信息,并根据所述元信息确定二维码所采用的目标绘制协议;所述目标绘制协议至少包括预设的分割规则、各同心圆的单位旋转角度和绘制属性信息;根据各同心圆的单位旋转角度和绘制属性信息,确定各同心圆对应的子数据序列;基于预设的分割规则,根据所述各同心圆的单位旋转角度,对各同心圆对应的子数据序列进行分割后的恢复操作,得到二维码对应的目标数据序列;对所述目标数据序列进行解码得到二维码对应的目标数据内容。9.根据权利要求8所述的方法,其中,所述基于预设的分割规则,根据所述各同心圆的单位旋转角度,对各同心圆对应的子数据序列进行分割后的恢复操作,得到二维码对应的目标数据序列,包括:基于所述分割规则,根据内容同心圆的单位旋转角度,对各内容同心圆对应的子数据序列进行分割后的恢复操作,得到内容数据序列;所述内容同心圆为除元同心圆之外的同心圆;所述元同心圆为用于存放所述元信息的同心圆;对所述内容数据序列和元同心圆的子数据序列进行组合,得到二维码对应的目标数据序列。10.根据权利要求9所述的方法,其中,所述基于所述分割规则,根据内容同心圆的单位旋转角度,对各内容同心圆对应的子数据序列进行分割后的恢复操作,得到内容数据序列,包括:确定各内容同心圆对应的子数据序列的总长度,并根据所述总长度构建辅助数据序列;根据内容同心圆的单位旋转角度,确定内容同心圆上的码元数量,并根据所述码元数量为所述内容同心圆构建固定长度的辅助数组;对所述辅助数据序列中辅助数据的索引号进行映射处理,并根据映射处理结果将所述辅助数据分配到所述内容同心圆的辅助数组中,得到辅助数组中元素在辅助数据序列中的索引号,作为对应子数据序列中内容数据在内容数据序列中的索引号;根据所述子数据序列中内容数据在内容数据序列中的索引号,对各子数据序列内的内容数据进行排列,得到内容数据序列。11.根据权利要求10所述的方法,其中,所述对所述辅助数据序列中辅助数据的索引号进行映射处理,并根据映射处理结果将所述辅助数据分配到所述内容同心圆的辅助数组中,包括:采用所述辅助数据序列内辅助数据的索引号对内容同心圆的数量取余,得到辅助数据
对应的数组序号;在所述数组序号所属的辅助数组中存在未赋值元素的情况下,将所述辅助数据分配到所述数组序号所属的辅助数组中。12.根据权利要求10所述的方法,还包括:在至少两个内容同心圆上的码元数量相同的情况下,还对所述至少两个内容同心圆的子数据序列进行交换。13.根据权利要求8所述的方法,其中,所述根据各同心圆的单位旋转角度和绘制属性信息,确定各同心圆对应的子数据序列,包括:根据元同心圆的单位旋转角度,确定元同心圆上的码元数量;所述元同心圆为用于存放所述元信息的同心圆;将元同心圆上的码元数量减去所述元信息的长度,作为元同心圆上的数据长度;根据所述元同心圆上的数据长度,从元同心圆上提取元同心圆的子数据序列。14.根据权利要求8-13中任一项所述的方法,还包括:从二维码的扫描图像中分别提取目标定位点,并根据所述目标定位点构建目标三角形;从二维码的原图像中分别提取原定位点,并根据原定位点构建原三角形;所述原三角形为三个原定位点构成的等腰直角三角形;确定所述目标三角形和所述原三角形之间的仿射变换矩阵,并采用所述仿射变换矩阵对所述目标三角形中的点进行线性还原;确定所述目标三角形和所述原三角形之间的畸变矢量,并根据所述畸变矢量对所述目标三角形中的点进行畸变还原。15.根据权利要求14所述的方法,其中,所述确定所述目标三角形和所述原三角形之间的畸变矢量,并根据所述畸变矢量对所述目标三角形中的点进行畸变还原,包括:对目标三角形中的第一目标边和原三角形中的第一原边进行缩放对齐;根据目标三角形中的第二目标边和原三角形中的第二原边确定第二目标边上采样点的畸变矢量,并根据目标三角形中的第三目标边和原三角形中的第三原边确定第三目标边上采样点的畸变矢量;针对目标三角形内的任一目标点,根据第二目标边上采样点的畸变矢量和第三目标边上采样点的畸变矢量,确定该目标点的畸变矢量;采用该目标点的畸变矢量,对该目标点进行畸变还原。16.根据权利要求15所述的方法,其中,所述根据第二目标边上采样点的畸变矢量和第三目标边上采样点的畸变矢量,确定该目标点的畸变矢量,包括:从第二目标边上选择与该目标点匹配的采样点作为第一采样点,并从第三目标边上选择与该目标点匹配的采样点作为第二采样点;根据该目标点的坐标、第一采样点的坐标和第二采样点的坐标,对第一采样点的畸变矢量和第二采样点的畸变矢量进行插值,得到该目标点的畸变矢量。17.一种二维码的生成装置,包括:内容编码模块,用于对待绘制的目标数据内容进行编码得到经编码的目标数据序列;元信息模块,用于根据从候选绘制协议中选择的目标绘制协议,确定二维码的元信息;
所述目标绘制协议至少包括预设的分割规则、各同心圆的单位旋转角度和绘制属性信息;数据分割模块,用于基于所述分割规则,根据各同心圆的单位旋转角度和所述元信息,对所述目标数据序列进行分割得到各同心圆对应的子数据序列;绘制模块,用于根据各同心圆的绘制属性信息,将对应的子数据序列绘制在各同心圆上,得到目标数据内容对应的目标二维码。18.根据权利要求17所述的装置,其中,所述数据分割模块包括:同心圆单元,用于从各同心圆中确定用于存放所述元信息的同心圆作为元同心圆,且将剩余的同心圆作为内容同心圆;目标序列拆分单元,用于根据所述元信息的长度和所述元同心圆的单位旋转角度,从所述目标数据序列中为所述元同心圆分配子数据序列,且将剩余的数据序列作为内容数据序列;内容序列分割单元,用于基于所述分割规则,根据内容同心圆的单位旋转角度,从所述内容数据序列中为内容同心圆分配对应的子数据序列。19.根据权利要求18所述的装置,其中,所述内容序列分割单元包括:内容数组子单元,用于根据内容同心圆的单位旋转角度,确定内容同心圆上的码元数量,并根据所述码元数量为所述内容同心圆构建固定长度的内容数组;索引映射子单元,用于对所述内容数据序列中内容数据的索引号进行映射处理,并根据映射处理结果将所述内容数据分配到所述内容同心圆的内容数组中,且将所述内容同心圆的内容数组作为内容同心圆对应的子数据序列。20.根据权利要求19所述的装置,其中,所述索引映射子单元具体用于:采用所述内容数据序列中内容数据的索引号对内容同心圆的数量取余,得到内容数据对应的数组序号;在所述数组序号所属的内容数组中存在未赋值元素的情况下,将所述内容数据分配到所述数组序号所属的内容数组中。21.根据权利要求19所述的装置,所述内容序列分割单元还包括:交换子单元,用于在至少两个内容同心圆上的码元数量相同的情况下,还对所述至少两个内容同心圆的子数据序列进行交换。22.根据权利要求18所述的装置,其中,所述目标序列拆分单元包括:码元数量子单元,用于根据元同心圆的单位旋转角度,确定元同心圆上的码元数量;数据长度子单元,用于将元同心圆上的码元数量减去所述元信息的长度,作为元同心圆上的数据长度;序列拆分子单元,用于根据所述元同心圆上的数据长度,选择位于所述目标数据序列尾部的数据,且将选择的数据作为元同心圆的子数据序列。23.根据权利要求17所述的装置,其中,所述元信息模块包括:协议编码单元,用于针对候选绘制协议中的每一协议项,根据目标绘制协议的协议内容在该协议项中的序号,确定该协议项的编码信息;元信息单元,用于按照各协议项之间的预设顺序,对各协议项的编码信息进行排列,得到二维码的元信息。24.一种二维码的识别装置,包括:
目标协议模块,用于从二维码的扫描图像中提取二维码的元信息,并根据所述元信息确定二维码所采用的目标绘制协议;所述目标绘制协议至少包括预设的分割规则、各同心圆的单位旋转角度和绘制属性信息;子数据序列模块,用于根据各同心圆的单位旋转角度和绘制属性信息,确定各同心圆对应的子数据序列;目标数据序列模块,用于基于预设的分割规则,根据所述各同心圆的单位旋转角度,对各同心圆对应的子数据序列进行分割后的恢复操作,得到二维码对应的目标数据序列;目标数据内容模块,用于对所述目标数据序列进行解码得到二维码对应的目标数据内容。25.根据权利要求24所述的装置,其中,所述目标数据序列模块包括:内容序列恢复单元,用于基于所述分割规则,根据内容同心圆的单位旋转角度,对各内容同心圆对应的子数据序列进行分割后的恢复操作,得到内容数据序列;所述内容同心圆为除元同心圆之外的同心圆;所述元同心圆为用于存放所述元信息的同心圆;目标数据序列单元,用于对所述内容数据序列和元同心圆的子数据序列进行组合,得到二维码对应的目标数据序列。26.根据权利要求25所述的装置,其中,所述内容序列恢复单元包括:辅助序列子单元,用于确定各内容同心圆对应的子数据序列的总长度,并根据所述总长度构建辅助数据序列;辅助数组子单元,用于根据内容同心圆的单位旋转角度,确定内容同心圆上的码元数量,并根据所述码元数量为所述内容同心圆构建固定长度的辅助数组;辅助索引号子单元,用于对所述辅助数据序列中辅助数据的索引号进行映射处理,并根据映射处理结果将所述辅助数据分配到所述内容同心圆的辅助数组中,得到辅助数组中元素在辅助数据序列中的索引号,作为对应子数据序列中内容数据在内容数据序列中的索引号;内容序列恢复子单元,用于根据所述子数据序列中内容数据在内容数据序列中的索引号,对各子数据序列内的内容数据进行排列,得到内容数据序列。27.根据权利要求26所述的装置,其中,所述辅助索引号子单元具体用于:采用所述辅助数据序列内辅助数据的索引号对内容同心圆的数量取余,得到辅助数据对应的数组序号;在所述数组序号所属的辅助数组中存在未赋值元素的情况下,将所述辅助数据分配到所述数组序号所属的辅助数组中。28.根据权利要求26所述的装置,内容序列恢复单元还包括:交换子单元,用于在至少两个内容同心圆上的码元数量相同的情况下,还对所述至少两个内容同心圆的子数据序列进行交换。29.根据权利要求24所述的装置,其中,所述子数据序列模块包括:元码元数量单元,用于根据元同心圆的单位旋转角度,确定元同心圆上的码元数量;所述元同心圆为用于存放所述元信息的同心圆;元数据长度单元,用于将元同心圆上的码元数量减去所述元信息的长度,作为元同心圆上的数据长度;
元子数据序列单元,用于根据所述元同心圆上的数据长度,从元同心圆上提取元同心圆的子数据序列。30.根据权利要求24-29中任一项所述的装置,所述装置还包括畸变还原模块,所述畸变还原模块包括:目标三角形单元,用于从二维码的扫描图像中分别提取目标定位点,并根据所述目标定位点构建目标三角形;原三角形单元,用于从二维码的原图像中分别提取原定位点,并根据原定位点构建原三角形;所述原三角形为三个原定位点构成的等腰直角三角形;线性还原单元,用于确定所述目标三角形和所述原三角形之间的仿射变换矩阵,并采用所述仿射变换矩阵对所述目标三角形中的点进行线性还原;畸变还原单元,用于确定所述目标三角形和所述原三角形之间的畸变矢量,并根据所述畸变矢量对所述目标三角形中的点进行畸变还原。31.根据权利要求30所述的装置,其中,所述畸变还原单元包括:对齐子单元,用于对目标三角形中的第一目标边和原三角形中的第一原边进行缩放对齐;采样畸变子单元,用于根据目标三角形中的第二目标边和原三角形中的第二原边确定第二目标边上采样点的畸变矢量,并根据目标三角形中的第三目标边和原三角形中的第三原边确定第三目标边上采样点的畸变矢量;目标畸变子单元,用于针对目标三角形内的任一目标点,根据第二目标边上采样点的畸变矢量和第三目标边上采样点的畸变矢量,确定该目标点的畸变矢量;畸变还原子单元,用于采用该目标点的畸变矢量,对该目标点进行畸变还原。32.根据权利要求31所述的装置,其中,所述目标畸变子单元具体用于:从第二目标边上选择与该目标点匹配的采样点作为第一采样点,并从第三目标边上选择与该目标点匹配的采样点作为第二采样点;根据该目标点的坐标、第一采样点的坐标和第二采样点的坐标,对第一采样点的畸变矢量和第二采样点的畸变矢量进行插值,得到该目标点的畸变矢量。33.一种电子设备,包括:至少一个处理器;以及与所述至少一个处理器通信连接的存储器;其中,所述存储器存储有可被所述至少一个处理器执行的指令,所述指令被所述至少一个处理器执行,以使所述至少一个处理器能够执行权利要求1-16中任一项所述的方法。34.一种存储有计算机指令的非瞬时计算机可读存储介质,其中,所述计算机指令用于使计算机执行根据权利要求1-16中任一项所述的方法。35.一种计算机程序产品,包括计算机程序,所述计算机程序在被处理器执行时实现根据权利要求1-16中任一项所述的方法。

技术总结
本公开提供了一种二维码的生成方法、识别方法、装置、设备及存储介质,涉及电子技术领域。该二维码的生成方法包括:对待绘制的目标数据内容进行编码得到经编码的目标数据序列;根据从候选绘制协议中选择的目标绘制协议,确定二维码的元信息;所述目标绘制协议至少包括预设的分割规则、各同心圆的单位旋转角度和绘制属性信息;基于所述分割规则,根据各同心圆的单位旋转角度和所述元信息,对所述目标数据序列进行分割得到各同心圆对应的子数据序列;根据各同心圆的绘制属性信息,将对应的子数据序列绘制在各同心圆上,得到目标数据内容对应的目标二维码。通过上述技术方案能够提高二维码的安全性。码的安全性。码的安全性。


技术研发人员:谢柏渊 张挥坤 郝文峰 陈映钐 张祺
受保护的技术使用者:北京百度网讯科技有限公司
技术研发日:2023.05.04
技术公布日:2023/9/23
版权声明

本文仅代表作者观点,不代表航空之家立场。
本文系作者授权航家号发表,未经原创作者书面授权,任何单位或个人不得引用、复制、转载、摘编、链接或以其他任何方式复制发表。任何单位或个人在获得书面授权使用航空之家内容时,须注明作者及来源 “航空之家”。如非法使用航空之家的部分或全部内容的,航空之家将依法追究其法律责任。(航空之家官方QQ:2926969996)

飞行汽车 https://www.autovtol.com/

分享:

扫一扫在手机阅读、分享本文

相关推荐