CN116341586B - 扫码方法、电子设备及存储介质 - Google Patents
扫码方法、电子设备及存储介质 Download PDFInfo
- Publication number
- CN116341586B CN116341586B CN202310207187.1A CN202310207187A CN116341586B CN 116341586 B CN116341586 B CN 116341586B CN 202310207187 A CN202310207187 A CN 202310207187A CN 116341586 B CN116341586 B CN 116341586B
- Authority
- CN
- China
- Prior art keywords
- image
- callback
- dimensional code
- image frame
- frame
- Prior art date
- Legal status (The legal status is an assumption and is not a legal conclusion. Google has not performed a legal analysis and makes no representation as to the accuracy of the status listed.)
- Active
Links
- 238000000034 method Methods 0.000 title claims abstract description 67
- 238000012937 correction Methods 0.000 claims abstract description 96
- 238000012545 processing Methods 0.000 claims description 245
- 230000006870 function Effects 0.000 claims description 41
- 230000009466 transformation Effects 0.000 claims description 38
- 239000011159 matrix material Substances 0.000 claims description 16
- 238000004590 computer program Methods 0.000 claims description 11
- 238000001514 detection method Methods 0.000 description 26
- 230000008569 process Effects 0.000 description 14
- 230000000694 effects Effects 0.000 description 13
- 238000010586 diagram Methods 0.000 description 11
- 238000013473 artificial intelligence Methods 0.000 description 7
- 239000000284 extract Substances 0.000 description 6
- 238000000605 extraction Methods 0.000 description 6
- 238000001914 filtration Methods 0.000 description 6
- 230000009286 beneficial effect Effects 0.000 description 4
- 238000005260 corrosion Methods 0.000 description 4
- 230000007797 corrosion Effects 0.000 description 4
- 238000003708 edge detection Methods 0.000 description 4
- 230000003287 optical effect Effects 0.000 description 4
- 238000013459 approach Methods 0.000 description 3
- 238000004891 communication Methods 0.000 description 3
- 230000008878 coupling Effects 0.000 description 3
- 238000010168 coupling process Methods 0.000 description 3
- 238000005859 coupling reaction Methods 0.000 description 3
- 238000013461 design Methods 0.000 description 3
- 230000018109 developmental process Effects 0.000 description 3
- 238000013528 artificial neural network Methods 0.000 description 2
- 238000004422 calculation algorithm Methods 0.000 description 2
- 238000004364 calculation method Methods 0.000 description 2
- 230000008859 change Effects 0.000 description 2
- 238000006243 chemical reaction Methods 0.000 description 2
- 238000011161 development Methods 0.000 description 2
- 238000005516 engineering process Methods 0.000 description 2
- 238000013507 mapping Methods 0.000 description 2
- 238000003672 processing method Methods 0.000 description 2
- 230000004044 response Effects 0.000 description 2
- 238000013519 translation Methods 0.000 description 2
- 241001522296 Erithacus rubecula Species 0.000 description 1
- 230000001133 acceleration Effects 0.000 description 1
- 210000000988 bone and bone Anatomy 0.000 description 1
- 230000000295 complement effect Effects 0.000 description 1
- 239000012634 fragment Substances 0.000 description 1
- 230000003993 interaction Effects 0.000 description 1
- 230000004807 localization Effects 0.000 description 1
- 238000010801 machine learning Methods 0.000 description 1
- 230000007246 mechanism Effects 0.000 description 1
- 229910044991 metal oxide Inorganic materials 0.000 description 1
- 150000004706 metal oxides Chemical class 0.000 description 1
- 238000010295 mobile communication Methods 0.000 description 1
- 238000012986 modification Methods 0.000 description 1
- 230000004048 modification Effects 0.000 description 1
- 230000000877 morphologic effect Effects 0.000 description 1
- 230000001537 neural effect Effects 0.000 description 1
- 238000009877 rendering Methods 0.000 description 1
- 230000011218 segmentation Effects 0.000 description 1
- 239000004065 semiconductor Substances 0.000 description 1
- 238000006467 substitution reaction Methods 0.000 description 1
- 238000010408 sweeping Methods 0.000 description 1
- 238000012549 training Methods 0.000 description 1
- 238000000844 transformation Methods 0.000 description 1
- 230000000007 visual effect Effects 0.000 description 1
Classifications
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06K—GRAPHICAL DATA READING; PRESENTATION OF DATA; RECORD CARRIERS; HANDLING RECORD CARRIERS
- G06K7/00—Methods or arrangements for sensing record carriers, e.g. for reading patterns
- G06K7/10—Methods or arrangements for sensing record carriers, e.g. for reading patterns by electromagnetic radiation, e.g. optical sensing; by corpuscular radiation
- G06K7/14—Methods or arrangements for sensing record carriers, e.g. for reading patterns by electromagnetic radiation, e.g. optical sensing; by corpuscular radiation using light without selection of wavelength, e.g. sensing reflected white light
- G06K7/1404—Methods for optical code recognition
- G06K7/1408—Methods for optical code recognition the method being specifically adapted for the type of code
- G06K7/1417—2D bar codes
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06K—GRAPHICAL DATA READING; PRESENTATION OF DATA; RECORD CARRIERS; HANDLING RECORD CARRIERS
- G06K7/00—Methods or arrangements for sensing record carriers, e.g. for reading patterns
- G06K7/10—Methods or arrangements for sensing record carriers, e.g. for reading patterns by electromagnetic radiation, e.g. optical sensing; by corpuscular radiation
- G06K7/14—Methods or arrangements for sensing record carriers, e.g. for reading patterns by electromagnetic radiation, e.g. optical sensing; by corpuscular radiation using light without selection of wavelength, e.g. sensing reflected white light
- G06K7/1404—Methods for optical code recognition
- G06K7/146—Methods for optical code recognition the method including quality enhancement steps
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06T—IMAGE DATA PROCESSING OR GENERATION, IN GENERAL
- G06T5/00—Image enhancement or restoration
- G06T5/80—Geometric correction
Landscapes
- Engineering & Computer Science (AREA)
- Physics & Mathematics (AREA)
- General Physics & Mathematics (AREA)
- Theoretical Computer Science (AREA)
- Electromagnetism (AREA)
- Health & Medical Sciences (AREA)
- General Health & Medical Sciences (AREA)
- Toxicology (AREA)
- Artificial Intelligence (AREA)
- Computer Vision & Pattern Recognition (AREA)
- Quality & Reliability (AREA)
- Studio Devices (AREA)
- Image Processing (AREA)
Abstract
本申请实施例提供了一种扫码方法、电子设备及存储介质。在该方法中,电子设备响应于对应用扫码功能的开启操作,获取第一回调图像帧,对该图像帧中第一二维码图像进行畸变校正得到第二二维码图像,基于第二二维码图像重新生成第二回调图像帧,使第二二维码图像在第二回调图像帧中位置与第一二维码图像在第一回调图像帧中位置一致;将第二回调图像帧发送至应用进行识别;在应用基于第二回调图像帧识别到二维码时,电子设备在预览图像上显示定位标识,其位置是基于第二二维码图像在第二回调图像帧中的位置确定的。这样能够解决由于用户扫码角度不佳而导致的扫码长时不成功甚至失败的问题,还能避免二维码定位标识在预览图像上显示位置不当的问题。
Description
技术领域
本申请涉及智能终端技术领域,尤其涉及一种扫码方法、电子设备及存储介质。
背景技术
随着科技的发展,条码充斥着我们的生活。条码可以帮助我们快速地付款、加友好、关注公众号等等。当用户使用终端扫描条码时,由于条码的位置或扫码角度等因素的影响,可能会出现无法识别条码的情形。此时,用户需要调整扫码角度不断尝试,以使终端能够扫码成功,这样会给用户带来不佳的使用体验。
发明内容
为了解决上述技术问题,本申请实施例提供一种扫码方法、电子设备及存储介质。在该方法中,电子设备对回调图像帧中的二维码进行畸变校正处理,并基于畸变校正后的二维码图像重新生成回调图像帧,以使扫码应用基于重新生成的回调图像帧进行扫码识别。其中,重新生成的回调图像帧中二维码位置与原有回调图像帧中的二维码位置一致。这样,本实施例提供的扫码方法不仅能够解决由于用户扫码角度不佳而导致的扫码长时不成功甚至失败的问题,还能避免二维码定位标识在预览图像上显示位置不当的问题。
第一方面,本申请实施例提供一种扫码方法。该方法包括:电子设备响应于对目标应用扫码功能的开启操作,获取第一回调图像帧和第一预览图像帧;电子设备从第一回调图像帧中提取第一二维码图像;电子设备对第一二维码图像进行畸变校正处理,得到第二二维码图像;电子设备创建空白图像帧,确定第一二维码图像在第一回调图像帧中的位置,并将第二二维码图像添加于空白图像帧上,得到第二回调图像帧,以使第二二维码图像在第二回调图像帧中的位置与第一二维码图像在第一回调图像帧中的位置一致;其中,空白图像帧与第一回调图像帧的图像尺寸相同;电子设备将第二回调图像帧发送至目标应用进行扫码识别;电子设备显示第一预览图像;在目标应用基于第二回调图像帧识别到二维码时,电子设备在第一预览图像上显示二维码定位标识;其中,二维码定位标识的位置,是基于第二二维码图像在第二回调图像帧中的位置确定的。
其中,目标应用指的是具有扫码功能的第三方应用,例如微信应用、支付宝应用等。
在本申请实施例中,回调图像帧用于扫码应用进行扫码识别操作,预览图像帧用于扫码应用进行图像预览操作。其中,第一回调图像帧的图像采集时间与第一预览图像帧的图像采集时间相近,且由于回调图像帧和预览图像帧对应于相同的图像采集场景,故第一回调图像帧中的画面信息与第一预览图像帧的画面信息几乎完全相同,差异非常小。由此,第一回调图像帧中的二维码位置与第一预览图像帧中的二维码位置也是相近的,如二维码中点心位置相近,也可以称为第一回调图像帧中的二维码区域与第一预览图像帧中的二维码区域绝大部分重叠,甚至完全重叠。
在目标应用基于第二回调图像帧识别到二维码时,电子设备确定二维码在第二回调图像帧中的位置,如二维码中心点在第二回调图像帧中的坐标。进而,电子设备根据该坐标在第一预览图像上显示二维码定位标识,以使二维码定位标识的中心点在第一预览图像中的坐标与第二回调图像帧中二维码的中心点坐标相同。
在待扫描的二维码所在平面与手机图像采集平面的夹角过大(如45度到75度)时,回调图像帧中的二维码会存在图像畸变的问题,电子设备对第一回调图像帧中的二维码图像进行畸变校正处理,并基于畸变校正后的二维码图像重新生成第二回调图像帧以供扫码应用进行识别。这样,能够提升扫码应用对二维码的定位及识别成功率,解决由于用户扫码角度不佳而导致的扫码长时不成功甚至失败的问题。另外,由于第一预览图像帧和第一回调图像帧所对应的拍摄场景是一致的,且图像采集时间的间隔比较小,因此第一预览图像帧的画面信息与第一回调帧的画面信息差异较小,第一回调图像帧中的二维码区域与第一预览图像帧中的二维码区域绝大部分重叠,甚至完全重叠。由于在重新生成的第二回调图像帧中,二维码位置与存在畸变问题的二维码在第一回调图像帧中的位置也是一致的,则扫码应用基于重新生成的第二回调图像帧确定的二维码定位标识会显示于第一预览图像中的二维码区域,能够避免出现二维码定位标识在第一预览图像中显示位置不正确的问题。
根据第一方面,该方法还包括:电子设备获取第三回调图像帧,第三回调图像帧为第一回调图像帧之后的回调图像帧;电子设备将第三回调图像帧发送至目标应用进行扫码识别;电子设备获取第四回调图像帧,第四回调图像帧为第三回调图像帧之后的回调图像帧;电子设备从第四回调图像帧中提取第三二维码图像,对第三二维码图像进行畸变校正处理,得到第四二维码图像;电子设备创建空白图像帧,确定第三二维码图像在第四回调图像帧中位置,并将第四二维码图像添加于空白图像帧中,得到第五回调图像帧,以使第四二维码图像在第五回调图像帧中的位置与第三二维码图像在第四回调图像帧中位置一致;电子设备将第五回调图像帧发送至目标应用进行扫码识别。
示例性的,第三回调图像帧为第一回调图像帧之后的下一个回调图像帧,第四回调图像帧为第三回调图像帧之后的下一个回调图像帧。
在扫码应用依次接收到的各个回调图像帧中,经过畸变校正处理的回调图像帧与未经过畸变校正处理的回调图像帧交替出现,扫码应用按照回调图像帧的接收顺序依次基于每个回调图像帧进行扫码识别。这样能够避免扫码应用无法识别经过畸变校正处理的回调图像帧,而导致二维码长时识别不成功的问题。一旦扫码应用能够识别未经畸变校正处理的回调图像帧,二维码还是能够被识别成功的,以此确保了扫码方法的成功率。
根据第一方面,或者以上第一方面的任意一种实现方式,该方法还包括:电子设备获取第三回调图像帧,第三回调图像帧为第一回调图像帧之后的回调图像帧;电子设备将第三回调图像帧发送至目标应用进行扫码识别。电子设备显示预览图像;在目标应用基于第三回调图像帧识别到二维码时,电子设备在相应的预览图像上显示二维码定位标识;其中,二维码定位标识的位置,与第三回调图像帧中的二维码位置一致。
类似的,在目标应用基于第五回调图像帧识别到二维码时,在相应的预览图像上显示二维码定位标识;其中,二维码定位标识的位置,与第四二维码图像在第五回调图像帧中的位置一致。
其中,扫码应用可能是基于经过畸变校正处理的回调图像帧N1完成的对二维码的定位及识别操作,此时二维码定位标识的位置是基于回调图像帧N1中二维码位置确定的;扫码应用可能是基于未经过畸变校正处理的回调图像帧N2完成的对二维码的定位及识别操作,此时二维码定位标识的位置是基于回调图像帧N2中二维码位置确定的。当扫码应用基于某一个回调图像帧完成对二维码的定位及识别操作之后,不再基于下一个回调图像帧执行对二维码的定位及识别操作。
根据第一方面,或者以上第一方面的任意一种实现方式,第二二维码图像在第二回调图像帧中的位置与第一二维码图像在第一回调图像帧中的位置一致,包括:第二二维码图像的中心点在第二回调图像帧中的坐标与第一二维码图像的中心点在第一回调图像帧中的坐标一致。
这样能够避免出现二维码定位标识在预览图像中显示位置不正确的问题。
根据第一方面,或者以上第一方面的任意一种实现方式,电子设备对第一回调图像帧中的第一二维码图像进行畸变校正处理,包括:在第一回调图像帧中第一二维码图像不满足变焦条件时,电子设备对第一回调图像帧中的第一二维码图像进行畸变校正处理。
根据第一方面,或者以上第一方面的任意一种实现方式,在第一回调图像帧中第一二维码图像满足变焦条件时,电子设备对第一回调图像帧进行变焦处理以放大二维码图像,得到第六回调图像帧;电子设备将第六回调图像帧发送至目标应用进行扫码识别。
这样,电子设备在将扫码应用的回调图像帧返回扫码应用之前,在回调图像帧中的二维码图像较小时,对回调图像帧中变焦处理以放大二维码图像,使得变焦处理后的回调图像帧更便于扫码应用识别,提高了扫码应用对回调图像帧的扫码成功率以及扫码效率,提升了用户使用体验。
根据第一方面,或者以上第一方面的任意一种实现方式,该方法还包括:电子设备显示第二预览图像;在目标应用基于第六回调图像帧识别到二维码时,电子设备在第二预览图像上显示二维码定位标识;其中,二维码定位标识的位置,与第六回调图像帧中的二维码图像位置一致。
这样,在电子设备在待扫描的二维码在回调图像中所占图像比例较小时,电子设备对回调图像帧中进行变焦处理以放大二维码图像,供扫码应用进行识别。此时,若扫码应用基于变焦后的回调图像帧识别到二维码,则基于该回调图像帧中二维码位置确定二维码定位标识的位置,并依据该位置将二维码定位标识显示与预览图像上。
根据第一方面,或者以上第一方面的任意一种实现方式,对第一二维码图像进行畸变校正处理,包括:在第一二维码图像的最大旋转角大于第一阈值时,根据透视变换对第一回调图像帧中的第一二维码图像进行畸变校正处理。其中,最大旋转角为第一夹角、第二夹角、第三夹角、第四夹角中的最大值,第一夹角为第一二维码图像左边界与竖直方向的夹角,第二夹角为第一二维码图像上边界与水平方向的夹角,第三夹角为第一二维码图像右边界与竖直方向的夹角,第四夹角为第一二维码图像下边界与水平方向的夹角。
关于第一夹角、第二夹角、第三夹角、第四夹角的相关解释,可以参照下文图7c以及相关解释,在此不再赘述。
根据第一方面,或者以上第一方面的任意一种实现方式,变焦条件包括:二维码图像在回调图像帧中所占的图像比例小于第二阈值,且与二维码对应的目标变焦比大于第三阈值;其中,目标变焦比用于指示对回调图像帧进行变焦处理以放大二维码图像时,所允许的最大变焦比值。
示例性的,电子设备可以根据二维码图像的轮廓计算二维码图像在回调图像帧中所占的图像比例r0。其中,r0=S0/S,S0为二维码图像的像素面积,S为回调图像帧的像素面积。
其中,目标变焦比即为下文中的最大允许变焦比r1。电子设备可以根据二维码图像尺寸信息以及二维码图像在回调图像帧中的位置信息,计算在回调图像帧中与二维码对应的最大允许变焦比r1。关于最大允许变焦比r1的详细说明,可以参照下文图7b以及相关解释,在此不再赘述。
根据第一方面,或者以上第一方面的任意一种实现方式,变焦条件包括:二维码图像在回调图像帧中所占的图像比例小于第二阈值。
根据第一方面,或者以上第一方面的任意一种实现方式,电子设备对第一回调图像帧进行变焦处理,包括:电子设备根据目标变焦比对第一回调图像帧进行变焦处理。
这样,在保证二维码图像完整的前提下,将回调图像帧中的二维码图像尽量放大,使得二维码的图像的某个边界无限接近回调图像帧的某个边界,甚至与这个边界重合,更利于扫码应用对二维码进行定位及识别。
根据第一方面,或者以上第一方面的任意一种实现方式,电子设备对第一回调图像帧中的第一二维码图像进行畸变校正处理,包括:电子设备确定第一二维码图像的四个顶点坐标;电子设备根据第一二维码图像的四个顶点坐标,确定第二二维码图像的边长;电子设备确定第二二维码图像的一个顶点的坐标,并基于第二二维码图像的边长计算第二二维码图像的其他三个顶点的坐标;电子设备根据第一二维码图像的四个顶点坐标,以及第二二维码图像的四个顶点坐标,计算透视变换矩阵;电子设备根据透视变换矩阵对第一二维码图像进行透视变换处理,得到第二二维码图像。
其中,电子设备确定的第二二维码图像的第一个顶点的坐标,也可以是左上顶点的坐标。示例性的,左上顶点的坐标可以设置于图像的左上角区域,以使第二二维码图像的四个顶点均可以落入该图像区域内。
根据第一方面,或者以上第一方面的任意一种实现方式,电子设备根据第一二维码图像的四个顶点坐标,确定第一二维码图像的边长,包括:电子设备根据第一二维码图像的四个顶点坐标,计算第一二维码图像的四个边长;电子设备将第一二维码图像的四个边长中的最大边长作为第二二维码图像的边长。
这样,电子设备将第一二维码图像的四个边长中的最大边长作为第二二维码图像的边长,相比与选取其他三个边长之一作为第二二维码图像的边长,对第一二维码图像进行畸变校正后得到的第二二维码图像的图像尺寸更大,有利于扫码应用进行识别。
第二方面,本申请实施例提供一种电子设备。该电子设备包括:一个或多个处理器;存储器;以及一个或多个计算机程序,其中一个或多个计算机程序存储在存储器上,当计算机程序被一个或多个处理器执行时,使得电子设备执行第一方面以及第一方面中任意一项的扫码方法。
第二方面以及第二方面的任意一种实现方式分别与第一方面以及第一方面的任意一种实现方式相对应。第二方面以及第二方面的任意一种实现方式所对应的技术效果可参见上述第一方面以及第一方面的任意一种实现方式所对应的技术效果,此处不再赘述。
第三方面,本申请实施例提供一种计算机可读存储介质。该计算机可读存储介质包括计算机程序,当计算机程序在电子设备上运行时,使得电子设备执行第一方面以及第一方面中任意一项的扫码方法。
第三方面以及第三方面的任意一种实现方式分别与第一方面以及第一方面的任意一种实现方式相对应。第三方面以及第三方面的任意一种实现方式所对应的技术效果可参见上述第一方面以及第一方面的任意一种实现方式所对应的技术效果,此处不再赘述。
第四方面,本申请实施例提供一种计算机程序产品,包括计算机程序,当计算机程序被运行时,使得计算机执行如第一方面或第一方面中任意一项的扫码方法。
第四方面以及第四方面的任意一种实现方式分别与第一方面以及第一方面的任意一种实现方式相对应。第四方面以及第四方面的任意一种实现方式所对应的技术效果可参见上述第一方面以及第一方面的任意一种实现方式所对应的技术效果,此处不再赘述。
第五方面,本申请提供了一种芯片,该芯片包括处理电路、收发管脚。其中,该收发管脚和该处理电路通过内部连接通路互相通信,该处理电路执行如第一方面或第一方面中任意一项的扫码方法,以控制接收管脚接收信号,以控制发送管脚发送信号。
第五方面以及第五方面的任意一种实现方式分别与第一方面以及第一方面的任意一种实现方式相对应。第五方面以及第五方面的任意一种实现方式所对应的技术效果可参见上述第一方面以及第一方面的任意一种实现方式所对应的技术效果,此处不再赘述。
附图说明
图1为示例性示出的一种应用场景;
图2为示例性示出的一种大角度扫码场景;
图3为示例性示出的电子设备的硬件结构示意图;
图4为示例性示出的电子设备的软件结构示意图;
图5为示例性示出的本实施例提供的扫码方法流程示意图;
图6为示例性示出的回调图像帧的处理流程示意图;
图7a为示例性示出的二维码检测结果示例图;
图7b为示例性示出的二维码图像在回调图像帧中的位置示意图;
图7c为示例性示出的二维码图像旋转角度示意图;
图7d为示例性示出的二维码图像透视变换示例图;
图7e为示例性示出的回调图像帧被处理前后的示例图;
图7f为示例性示出的扫码定位场景示意图;
图8为示例性示出的本实施例提供的扫码方法流程示意图。
具体实施方式
下面将结合本申请实施例中的附图,对本申请实施例中的技术方案进行清楚、完整地描述,显然,所描述的实施例是本申请一部分实施例,而不是全部的实施例。基于本申请中的实施例,本领域普通技术人员在没有作出创造性劳动前提下所获得的所有其他实施例,都属于本申请保护的范围。
本文中术语“和/或”,仅仅是一种描述关联对象的关联关系,表示可以存在三种关系,例如,A和/或B,可以表示:单独存在A,同时存在A和B,单独存在B这三种情况。
本申请实施例的说明书和权利要求书中的术语“第一”和“第二”等是用于区别不同的对象,而不是用于描述对象的特定顺序。例如,第一目标对象和第二目标对象等是用于区别不同的目标对象,而不是用于描述目标对象的特定顺序。
在本申请实施例中,“示例性的”或者“例如”等词用于表示作例子、例证或说明。本申请实施例中被描述为“示例性的”或者“例如”的任何实施例或设计方案不应被解释为比其它实施例或设计方案更优选或更具优势。确切而言,使用“示例性的”或者“例如”等词旨在以具体方式呈现相关概念。
在本申请实施例的描述中,除非另有说明,“多个”的含义是指两个或两个以上。例如,多个处理单元是指两个或两个以上的处理单元;多个系统是指两个或两个以上的系统。
随着科技的发展,条码充斥着我们的生活。条码可以帮助我们快速地付款、加友好、关注公众号等等。示例性的,条码包括但不限于条形码、二维码等。
目前,电子设备上越来越多的应用程序(application,APP)加入了使用相机的功能,以使APP可以使用相机实现扫码功能。以扫码APP为微信、条码为二维码为例,图1示例性的示出了一种应用场景。如图1中(1)所示,用户点击微信应用的图标101,手机检测到用户操作,打开微信应用并显示微信应用的界面。用户在微信应用中执行相关操作,使微信应用显示包括“扫一扫”功能的界面,如图1中(2)所示。继续参照图1中(2),用户点击“扫一扫”功能选项102,手机检测到用户操作,显示“扫一扫”界面,如图1中(3)所示。继续参照图1中(3),在微信应用的“扫一扫”界面中,显示有预览窗口103,预览窗口中显示有通过手机摄像头采集的预览图像,以及扫描线1031。其中,扫描线1031持续地由上向下移动,向用户展示正在扫描的效果。在此过程中,微信应用对图像中的二维码进行定位并识别。在微信应用完成对二维码的定位及识别操作之后,手机显示扫码定位界面(参照图1中(4)所示),并立刻跳转到与二维码内容信息对应的扫码结果界面(图中未示出)。其中,扫码定位界面用于指示二维码在图像中的定位结果,扫码结果界面用于指示二维码的内容识别结果。示例性的,扫码结果界面可以为与二维码内容对应的操作界面(如支付界面、加好友等)或信息展示界面(公众号界面等)等。在如图1中(4)所示,在扫码定位界面中显示有微信应用的当前显示的预览图像帧104以及扫码定位标识(或称二维码定位标识)1041。其中,扫码定位标识1041,用于指示微信应用识别到的二维码在扫码图像中的位置信息,以使用户了解微信应用对图像中的二维码的定位情形。例如,在微信应用中,扫码定位标识1041为绿色的圆点。
如果微信应用无法完成对二维码的定位及识别操作,则扫描线1031会一直持续地由上向下移动,始终向用户展示正在扫描的效果。在一种情形下,如果二维码的位置不佳或扫码角度过大,则可能出现微信应用无法完成对二维码的定位及识别,这样扫描线1031会一直持续地由上向下移动。图2示例性的示出了一种应用场景。如图2所示,用户手持手机100_1并使用微信应用中“扫一扫”功能时,如果二维码200所在平面与手机的图像采集平面的夹角过大,则在微信应用的扫码图像中二维码200会发生畸变,导致微信应用无法完成对二维码的定位及识别操作,扫描线1031会一直持续地由上向下移动,始终向用户展示正在扫描的效果。此时,用户只能不断调整手机100_1的图像采集方向,使手机的图像采集平面尽量与二维码200所在平面平行,减小扫码图像中二维码200的畸变程度,进而促使微信应用能够完成对二维码的定位及识别操作。其中,手机的图像采集平面,可以理解为手机摄像头的透镜所在平面,或者是与透镜所在平面平行的平面。
因此,当待扫描的条码所在平面与电子设备图像采集平面的夹角过大(如45度到75度)时,如何提升扫码应用对条码的定位及识别成功率,是亟待解决的问题。
如图3所示为电子设备100的硬件结构示意图。可选地,电子设备100可以称为终端,也可以称为终端设备。电子设备100可以是手机、平板电脑、可穿戴设备等具有摄像头的设备,本申请对电子设备100的类型不做限定。需要说明的是,电子设备100的结构示意图可以适用于图1~图2中的手机。
应该理解的是,图3所示的电子设备100仅是电子设备的一个范例,并且电子设备100可以具有比图中所示的更多的或者更少的部件,可以组合两个或多个的部件,或者可以具有不同的部件配置。图3中所示出的各种部件可以在包括一个或多个信号处理和/或专用集成电路在内的硬件、软件、或硬件和软件的组合中实现。
如图3所示,电子设备100可以包括:处理器110,外部存储器接口120,内部存储器121,通用串行总线(universal serial bus,USB)接口130,充电管理模块140,电源管理模块141,电池142,天线1,天线2,移动通信模块150,无线通信模块160,音频模块170,扬声器170A,受话器170B,麦克风170C,耳机接口170D,传感器模块180,按键190,马达191,指示器192,摄像头193,显示屏194,以及用户标识模块(subscriber identification module,SIM)卡接口195等。其中传感器模块180可以包括压力传感器,陀螺仪传感器,加速度传感器,温度传感器,运动传感器,气压传感器,磁传感器,距离传感器,接近光传感器,指纹传感器,触摸传感器,环境光传感器,骨传导传感器等。
处理器110可以包括一个或多个处理单元,例如:处理器110可以包括应用处理器(application processor,AP),调制解调处理器,图形处理器(graphics processingunit,GPU),图像信号处理器(image signal processor,ISP),控制器,存储器,视频编解码器,数字信号处理器(digital signal processor,DSP),基带处理器,和/或神经网络处理器(neural-network processing unit,NPU)等。其中,不同的处理单元可以是独立的器件,也可以集成在一个或多个处理器中。
其中,控制器可以是电子设备100的神经中枢和指挥中心。控制器可以根据指令操作码和时序信号,产生操作控制信号,完成取指令和执行指令的控制。
处理器110中还可以设置存储器,用于存储指令和数据。在一些实施例中,处理器110中的存储器为高速缓冲存储器。
电子设备100通过GPU,显示屏194,以及应用处理器等实现显示功能。GPU为图像处理的微处理器,连接显示屏194和应用处理器。GPU用于执行数学和几何计算,用于图形渲染。处理器110可包括一个或多个GPU,其执行程序指令以生成或改变显示信息。
显示屏194用于显示图像,视频等。显示屏194包括显示面板。在一些实施例中,电子设备100可以包括1个或N个显示屏194,N为大于1的正整数。
电子设备100可以通过ISP,摄像头193,视频编解码器,GPU,显示屏194以及应用处理器等实现拍摄功能。
ISP用于处理摄像头193反馈的数据。例如,拍照时,打开快门,光线通过镜头被传递到摄像头感光元件上,光信号转换为电信号,摄像头感光元件将所述电信号传递给ISP处理,转化为肉眼可见的图像。ISP还可以对图像的噪点,亮度,肤色进行算法优化。ISP还可以对拍摄场景的曝光,色温等参数优化。在一些实施例中,ISP可以设置在摄像头193中。
摄像头193用于捕获静态图像或视频。例如,在扫码场景下,摄像头193可以采集包括条码的图像画面。物体通过镜头生成光学图像投射到感光元件。感光元件可以是电荷耦合器件(charge coupled device,CCD)或互补金属氧化物半导体(complementary metal-oxide-semiconductor,CMOS)光电晶体管。感光元件把光信号转换成电信号,之后将电信号传递给ISP转换成数字图像信号。ISP将数字图像信号输出到DSP加工处理。DSP将数字图像信号转换成标准的RGB,YUV等格式的图像信号。在一些实施例中,电子设备100可以包括1个或N个摄像头193,N为大于1的正整数。
内部存储器121可以用于存储计算机可执行程序代码,所述可执行程序代码包括指令。处理器110通过运行存储在内部存储器121的指令,从而执行电子设备100的各种功能应用以及数据处理,例如使得电子设备100实现本申请实施例中的扫码方法。
电子设备100的软件系统可以采用分层架构,事件驱动架构,微核架构,微服务架构,或云架构。本申请实施例以分层架构的Android系统为例,示例性说明电子设备100的软件结构。
图4是本申请实施例的电子设备100的软件结构框图。
电子设备100的分层架构将软件分成若干个层,每一层都有清晰的角色和分工。层与层之间通过软件接口通信。在一些实施例中,将Android系统分为四层,从上至下分别为应用程序层,应用程序框架层,HAL(Hardware Abstraction Layer,硬件抽象层),以及内核层(也称驱动层)。
可以理解的,图4仅为示例,例如,在应用框架层和HAL之间,还可以包括安卓运行时(Android runtime)和系统库(libraries)层等。其中,Android Runtime包括核心库和虚拟机,负责安卓系统的调度和管理。系统库可以包括多个功能模块。例如:表面管理器(surface manager),媒体库(Media Libraries),三维图形处理库(例如:OpenGL ES),2D图形引擎(例如:SGL)等。
应用程序层可以包括一系列应用程序包。如图4所示,应用程序包可以包括相机、图库、扫码应用(第三方应用)、场景识别模块等。应用程序包还可以包括通话、日历、地图、导航、音乐、视频、短信息、WLAN、蓝牙等应用程序。
在本申请实施例中,场景识别模块可以用于确定与当前场景确定对应的标志位FLAG的值。其中,标志位FLAG的值用于指示是否需要创建回调流。示例性的,若场景识别模块确定与当前场景对应的FLAG=1,则当前场景需要创建回调流;若场景识别模块确定与当前场景对应的FLAG=0,则当前场景不需要创建回调流。
应用程序框架层为应用程序层的应用程序提供应用编程接口(applicationprogramming interface,API)和编程框架。应用程序框架层包括一些预先定义的函数。
如图4所示,应用程序框架层可以包括窗口管理器,内容提供器,资源管理器,视图系统,通知管理器、相机服务等。
相机服务可以用于管理相机,包括相机的启动和停止,预览流(previewStream)和回调流(callbackStream)的创建,预览图像帧和回调图像帧的获取,向上层应用程序上报预览流,以及通过回调函数向上层应用程序上报回调流等。其中,预览流是由多个预览图像帧组成的,预览图像帧是基于相机传感器采集的预览图像数据生成的;回调流是由多个回调图像帧组成的,回调图像帧是基于相机传感器采集的回调图像数据生成的。
在本申请实施例中,相机服务可以根据场景识别模块确定的标志位FLAG的值,确定是否需要创建回调流。
窗口管理器用于管理窗口程序。窗口管理器可以获取显示屏大小,判断是否有状态栏,锁定屏幕,截取屏幕等。
内容提供器用来存放和获取数据,并使这些数据可以被应用程序访问。所述数据可以包括视频,图像,音频,拨打和接听的电话,浏览历史和书签,电话簿等。
资源管理器为应用程序提供各种资源,比如本地化字符串,图标,图片,布局文件,视频文件等等。
视图系统包括可视控件,例如显示文字的控件,显示图片的控件等。视图系统可用于构建应用程序。显示界面可以由一个或多个视图组成的。例如,包括短信通知图标的显示界面,可以包括显示文字的视图以及显示图片的视图。
通知管理器使应用程序可以在状态栏中显示通知信息,可以用于传达告知类型的消息,可以短暂停留后自动消失,无需用户交互。比如通知信息被用于告知下载完成,消息提醒等。通知信息还可以是以图表或者滚动条文本形式出现在系统顶部状态栏的通知,例如后台运行的应用程序的通知,还可以是以对话窗口形式出现在屏幕上的通知。通知信息还例如可以是在状态栏提示文本信息,发出提示音,电子设备振动,指示灯闪烁等。
HAL用于将底层硬件抽象化,以为上层提供抽象后的统一的服务。其中,HAL可以对内核层中的驱动程序进行封装,并向应用程序框架层提供调用的接口,屏蔽低层硬件的实现细节。如图4所示,HAL中可以包括相机HAL(Camera HAL)等。
Camera HAL是Camera核心软件框架,该Camera HAL中包括传感器节点(Sensornode)、图像处理模块、条码检测模块、条码畸变校正模块、条码变焦(zoom)模块等。
其中,Sensor node可以是面向相机传感器的控制节点,Sensor node可以通过相机驱动控制相机传感器进行曝光出图。
图像处理模块可以用于但不限于图像信号前端处理、空间对齐变换处理、图像信号后端处理、图像格式转换处理(如GRB图像与YUV图像之间的格式转换)、条码畸变检测处理、条码尺寸检测处理、以及图像新建操作等等。
条码检测模块可以用于对图像中条码进行检测,确定条码图像区域。可选的,条码检测模块为二维码检测模块,用于对图像中的二维码进行检测,确定二维码图像区域。
条码畸变校正模块可以用于对满足畸变条件的条码图像进行畸变校正处理。其中,条码畸变校正模块可以基于透视变换原理对满足畸变条件的条码图像进行畸变校正处理。可选的,条码畸变校正模块为二维码畸变校正模块,用于基于透视变换原理对满足畸变条件的二维码图像进行畸变校正处理。
条码zoom模块可以用于对满足变焦条件的图像进行调焦操作以放大条码图像在整帧图像中的图像比例。可选的,条码zoom模块为二维码zoom模块,用于对满足变焦条件的图像进行调焦操作以放大二维码图像在整帧图像中的图像比例。
需要指出的是,条码检测模块、条码畸变校正模块和条码zoom模块是基于功能进行划分的,每个模块用于实现一定的功能。关于对条码检测模块、条码畸变校正模块和条码zoom模块的划分,本申请不做限定。条码检测模块、条码畸变校正模块和条码zoom模块,可以单独设置的,也可以集成在一起,例如集成设置于图像处理模块中。
内核层是硬件和软件之间的层。内核层至少包含相机驱动、显示驱动。其中,硬件至少包括处理器、相机、显示屏、传感器等。
可以理解的是,图4示出的软件结构中的层以及各层中包含的部件,并不构成对电子设备100的具体限定。在本申请另一些实施例中,电子设备100可以包括比图示更多或更少的层,以及每个层中可以包括更多或更少的部件,本申请不做限定。
可以理解的是,电子设备为了实现本申请实施例中的扫码方法,其包含了执行各个功能相应的硬件和/或软件模块。结合本文中所公开的实施例描述的各示例的算法步骤,本申请能够以硬件或硬件和计算机软件的结合形式来实现。某个功能究竟以硬件还是计算机软件驱动硬件的方式来执行,取决于技术方案的特定应用和设计约束条件。本领域技术人员可以结合实施例对每个特定的应用来使用不同方法来实现所描述的功能,但是这种实现不应认为超出本申请的范围。
参考如图1和图2所述的示例,以微信应用的“扫一扫”功能为例,微信应用基于电子设备的相机功能实现其“扫一扫”功能。其中,微信应用在实现其“扫一扫”功能时,将相机应用采集的预览图像帧用于界面预览,将相机应用采集的回调图像帧用于扫码识别。
下述以第三方应用为微信应用、扫码功能为“扫一扫”功能为例,结合图5,对本申请实施例提供的扫码方法进行解释说明。其中,第三方应用还可以是具有扫码功能的其他应用程序,例如支付宝应用等。
参考图1中(1),用户点击微信应用的图标101,微信应用启动。在微信应用启动后,与微信应用对应的活动线程生成。继续参考图1中(2),用户点击“扫一扫”功能选项102,响应于该用户操作,手机中的微信SDK(Software Development Kit,软件开发工具包)启动相机SDK,如图5所示。在“扫一扫”功能启动后,与微信应用对应的活动线程向场景识别模块发送界面场景参数。其中,界面场景参数用于描述手机当前界面所处的场景和状态,界面场景参数可以包括但不限于应用包名(PackegeName)、活动名(ActivityName),或者界面场景参数包括但不限于应用包名、活动名和片段名(FragmentName)(或称页面名)等。进而,场景识别模块可以根据界面场景参数确定场景标志位FLAG的值。其中,场景标志位FLAG的值用于指示当前场景是否需要创建回调流。示例性的,当FLAG=1时,表示当前场景需要创建回调流;当FLAG=0时,表示当前场景不需要创建回调流。
需要说明的是,预览流是由多个预览图像帧组成的,预览图像帧是根据相机传感器采集的预览图像数据生成的,预览图像数据是相机传感器基于预览图像帧请求而采集的图像数据;回调流是由多个回调图像帧组成的,回调图像帧是根据相机传感器采集的回调图像数据生成的,回调图像数据是相机传感器基于回调图像帧请求而采集的图像数据。其中,预览流用于第三方应用显示预览图像,而回调流用于第三方应用实现特定的功能,在本申请中回调流具体用于微信应用实现扫码识别功能。
示例性的,场景识别模块可以将接收到界面场景参数与预设场景对应的界面场景参数进行匹配。其中,预设场景对应的标志位FLAG的值为1。若匹配成功,则场景识别模块可以确定与当前场景对应的标志位FLAG=1;若匹配不成功,则场景识别模块可以确定与当前场景对应的标志位FLAG=0。在场景识别模块确定与当前场景对应的FLAG值之后,将该FLAG值发送给相机SDK。
由于微信应用在实现“扫一扫”功能时,是根据回调图像帧进行扫码识别操作的,因此与微信应用“扫一扫”功能对应的场景标志位FLAG的值为“1”,场景识别模块将指示信息“FLAG=1”发送至相给相机SDK。
继续参照图5,相机SDK接收到微信SDK发送的启动指示之后,向相机服务发送预览指示,相机服务根据预览指示生成预览图像帧请求,并将预览图像帧请求发送至相机HAL。
在本申请实施例中,场景识别模块将指示信息“FLAG=1”发送给相给相机SDK,相机SDK接收到指示信息“FLAG=1”之后,将指示信息“FLAG=1”发送给相机服务。相机服务根据指示信息“FLAG=1”生成回调图像帧请求,并将回调图像帧请求发送至相机HAL。
相机HAL接收到预览图像帧请求之后,相机HAL中Sensor node将预览图像帧请求发送至相机驱动,通过相机驱动控制相机传感器进行曝光出图操作,得到预览图像数据。
相机HAL接收到回调图像帧请求之后,相机HAL中Sensor node将回调图像帧请求发送至相机驱动,通过相机驱动控制相机传感器进行曝光出图操作,得到回调图像数据。
由于安卓架构中相机系统在应用程序框架(Framework)层与HAL之间的轮转缓存(buffer)机制。在相机服务接收到预览指示之后,相机服务首先会连续下发多个(例如8个)预览图像帧请求至相机HAL,并在每次接收到相机HAL反馈的一个预览图像帧之后再向相机HAL发送一个预览图像帧请求,直至预览结束。在相机HAL中,Sensor node会依次基于这多个预览图像帧请求,通过相机驱动控制相机传感器进行曝光出图操作。类似的,在相机服务接收到指示信息“FLAG=1”之后,相机服务首先会连续下发多个(例如8个)回调图像帧请求至相机HAL,并在每次接收到相机HAL反馈的一个回调图像帧之后再向相机HAL发送一个回调图像帧请求,直至扫码识别结束。在相机HAL中,Sensor node会依次基于这多个回调图像帧请求,通过相机驱动控制相机传感器进行曝光出图操作。
这样,相机服务实现了预览流的创建以及回调流的创建。其中,预览流中预览图像帧是持续获取并更新的,也即微信应用的预览画面是根据依次获取到的预览图像帧而生成的;回调流中的回调图像帧也是持续获取并更新的,也即微信应用是依次根据获取到的回调图像帧实现扫码识别功能的。
需要指出的是,关于相机服务创建预览流和创建回调流的先后顺序,本申请实施例不做限定。例如,相机服务先创建预览流,再创建回调流。再例如,相机服务并行地创建预览流和回调流。
如果相机服务接收到预览指示以及指示信息“FLAG=0”,则相机服务根据预览指示生成预览图像帧请求,并将生成预览图像帧请求发送至相机HAL。由于指示信息“FLAG=0”指示当前场景不需要创建回调流,故在此情形下相机服务不会生成回调图像帧请求。
继续参照图5,在相机传感器曝光生成预览图像数据后,预览图像数据经相机驱动发送至图像处理模块。图像处理模块对预览图像数据进行相关处理,包括但不限于前端处理、空间对齐变换、后端处理等,得到相应的预览图像帧。进而,图像处理模块生成的预览图像帧通过相机服务被发送至微信SDK的UI模块进行显示。
在相机传感器曝光生成回调图像数据后,回调图像数据经相机驱动发送至图像处理模块。图像处理模块对回调图像数据进行相关处理,包括但不限于前端处理、空间对齐变换、后端处理等,得到相应的回调图像帧。
在本申请实施例中,与预览图像帧不同的是,回调图像帧没有直接被发送至微信SDK,而是需要在相机HAL中被进一步处理。
参照图5,在一种可选的实施方式中,在将回调图像帧反馈至相机服务之前,图像处理模块还会对其进行畸变校正处理。其中,图像处理模块调用二维码检测模块在回调图像帧中提取二维码图像轮廓,并根据二维码图像轮廓在回调图像帧中裁切出二维码图像。图像处理模块判断二维码图像是否满足畸变校正条件,是则调用二维码畸变校正模块对二维码图像进行畸变校正处理,并根据畸变校正处理后的二维码图像重新生成回调图像帧,作为处理后的回调图像帧。在得到处理后的回调图像帧之后,图像处理模块将该处理后的回调图像帧发送至相机服务。
进而,相机服务通过微信SDK设置的回调函数将该处理后的回调图像帧返回至微信SDK中的识别接口。其中,微信SDK可以根据自身的业务逻辑确定设置回调函数的时机(例如在对焦处理后),并在该时机调用相机SDK接口中的回调函数接口来设置回调函数。微信SDK通过识别接口接收到回调图像帧之后,将回调图像帧发送至识别模块,通过识别模块对回调图像帧中的二维码进行定位及识别处理。微信SDK的识别模块通过识别接口获取到该处理后的回调图像帧之后,即可对该回调图像帧进行二维码的定位及识别处理。其中,识别模块对二维码进行定位可以指的是确定二维码在图像中的位置信息,对二维码进行识别可以指的是确定二维码包含的内容信息,例如链接信息、文字信息等。
在待扫描的二维码所在平面与手机图像采集平面的夹角过大(如45度到75度)时,回调图像帧中的二维码会存在畸变的问题。由于图像处理模块在将回调图像帧反馈至相机服务之前对其中的二维码图像进行了畸变校正处理,并将处理后的回调帧图像经相机服务发送至微信SDK中的识别模块进行识别,使得微信SDK中识别模块识别的二维码图像是不存在畸变现象的,便于微信SDK的识别模块执行二维码定位及识别操作,以此提升了微信SDK的识别模块对二维码的定位及识别成功率,也能加快微信SDK的识别模块对二维码的定位及识别效率。
识别模块对回调图像帧中的二维码完成定位及识别处理之后,确定二维码定位结果,并将二维码定位结果发送至UI模块。其中,二维码定位结果用于指示二维码在回调图像帧中的位置信息,例如可以是二维码中心点在回调图像帧中的坐标信息。进而,UI模块可以根据二维码定位结果确定扫码定位标识1041在预览图像中的显示位置,例如将二维码定位结果指示的坐标作为扫码定位标识1041的中心点在预览图像中的坐标,并将扫码定位标识显示于当前显示的预览图像帧上,此时可以参照图1中(4)所示。
需要指出的是,上述以回调帧图像中包括一个二维码为例进行解释说明的。当回调图像帧中包括多个二维码时,图像处理模块可以调用二维码检测模块在回调图像帧中提取各个二维码图像轮廓,并根据各个二维码图像轮廓分别在回调图像帧中提取二维码图像,并分别对每个二维码图像进行畸变校正处理,以使处理后的回调图像帧中的各个二维码均不存在畸变现象。
在微信SDK中识别模块对处理后的回调图像帧进行二维码定位处理后,如果仅定位到一个二维码,识别模块则将与该二维码对应的定位结果发送至UI模块。此时,UI模块可以根据该二维码定位结果确定扫码定位标识1041在预览图像中的显示位置,并将扫码定位标识1041显示于当前显示的预览图像帧上,此时可以参照图1中(4)所示,仅显示一个扫码定位标识。在此情形下,识别模块对定位得到的这个二维码进行识别处理得到二维码信息内容,微信应用界面随即跳转至与二维码内容信息对应的扫码结果界面,例如与二维码内容信息对应的操作界面(如支付界面、加好友等)或信息展示界面(公众号界面等)等。
在微信SDK中识别模块对处理后的回调图像帧进行二维码定位处理后,如果定位到多个二维码,识别模块则将与每个二维码分别对应的各个定位结果发送至UI模块。此时,UI模块可以根据各个二维码定位结果确定各个扫码定位标识1041在预览图像中的显示位置,并将各个扫码定位标识均显示于当前显示的预览图像帧上。在此情形下,响应于用户对某个扫码定位标识的选择操作,例如点击操作等,识别模块对用户选择的这个二维码(也即与用户选择的扫码定位标识对应的二维码)进行识别处理得到二维码信息内容,微信应用界面随即跳转至与该扫码定位标识所指示的二维码对应的扫码结果界面。其中,识别模块也可以在用户选择扫码定位标识之前,分别对定位到的每个二维码进行识别,以在用户选择某个扫码定位标识之后,微信应用界面可以直接跳转显示与该扫码定位标识所指示的二维码对应的扫码结果界面,本实施例对此不做限定。
如果图像处理模块判断裁切得到的二维码图像不满足畸变校正条件,则不对回调图像帧进行处理,直接将其该回调图像帧发送至相机服务,以使相机服务通过微信SDK的回调函数将该回调图像帧返回至微信SDK中的识别接口,进而微信SDK的识别模块可以对该回调图像帧进行二维码的定位及识别处理。
参照图5,在另一种可选的实施方式中,图像处理模块调用二维码检测模块在回调图像帧中提取到二维码图像轮廓,并根据二维码图像轮廓在回调图像帧中裁切出二维码图像,图像处理模块首先判断在回调图像帧中二维码图像是否满足zoom条件。若在回调图像帧中二维码图像满足zoom条件,则图像处理模块调用二维码zoom模块对回调图像帧进行变焦处理,以放大二维码图像。其中,由于变焦处理前后回调图像帧的图像尺寸不变,故变焦处理后二维码图像在回调图像帧中的图像比例增大。此时,图像处理模块将变焦处理后的回调图像帧作为处理后的回调图像帧,并将该处理后的回调图像帧发送至相机服务。若在回调图像帧中二维码图像不满足zoom条件,则图像处理模块再判断裁切得到的二维码图像是否满足畸变校正条件。若裁切得到的二维码图像满足畸变校正条件,则图像处理模块调用二维码畸变校正模块对二维码图像进行畸变校正处理,并根据畸变校正处理后的二维码图像重新生成回调图像帧,作为处理后的回调图像帧,将该处理后的回调图像帧发送至相机服务。若裁切得到的二维码图像不满足畸变校正条件,则图像处理模块不对回调图像帧进行处理,直接将其该回调图像帧发送至相机服务。进而,相机服务可以通过微信SDK的回调函数将接收到的回调图像帧返回至微信SDK中的识别接口,微信SDK的识别模块对接收到的回调图像帧进行二维码的定位及识别处理。关于微信SDK的识别模块接收到回调图像帧后的处理流程,可以参照前文,在此不再赘述。
在待扫描的二维码所在平面与手机图像采集平面的夹角过大(如45度到75度)时,回调图像帧中的二维码可能存在图像过小的问题,或者是存在图像畸变的问题。由于图像处理模块在将回调图像帧反馈至相机服务之前对其中的二维码图像进行了变焦处理或畸变校正处理,并将处理后的回调帧图像经相机服务发送至微信SDK中的识别模块进行识别,使得微信SDK中识别模块识别的二维码在图像中尺寸合适,且不存在畸变现象,便于微信SDK的识别模块执行二维码定位及识别操作,以此提升了微信SDK的识别模块对二维码的定位及识别成功率,也能加快微信SDK的识别模块对二维码的定位及识别效率。
示例性地,如图6所示,以一个回调图像帧为例,对图6中图像处理模块在将其发送至相机服务之前对其进行的处理过程进行详细说明。其中,图6所示的处理的流程是以图6所示结构为例进行解释说明的,该处理流程也可以由图像处理模块单独完成,如二维码检测模块、二维码zoom模块、二维码畸变校正模块所执行的操作均可以由图像处理模块来完成。
如图6所示,以回调图像帧A为例,在图像处理模块根据其接收到回调图像数据生成回调图像帧A之后,图像处理模块对回调图像帧A的处理流程,可以包括如下步骤:
S301,图像处理模块获取回调图像帧A。
假设,回调图像帧A指的是第n个回调图像帧,则回调图像帧A是与第n个回调图像帧请求对应的。相机传感器基于第n个回调图像帧请求采集到回调图像数据,并将该回调图像数据经相机驱动发送至图像处理模块。图像处理模块对该回调图像数据进行相关处理,例如图像信号前端处理、空间对齐变换处理、图像信号后端处理等,得到回调图像帧A。其中,回调图像帧A的图像格式为YUV。
S302,图像处理模块将回调图像帧A的图像格式由YUV转换为RGB,得到回调图像帧B。
S303,图像处理模块调用二维码检测模块在回调图像帧B中提取二维码图像轮廓。
如图7a所示,图像处理模块将回调图像帧B 401输入二维码检测模块,二维码检测模块在回调图像帧B 401中提取到二维码图像轮廓402。
示例性地,二维码检测模块在回调图像帧B 401中提取到二维码图像轮廓402的顶点坐标。
在一示例中,二维码检测模块为预先训练生成的二维码AI(ArtificialIntelligence,人工智能)检测模块。将回调图像帧B 401输入二维码AI检测模块,二维码AI检测模块在回调图像帧B 401上标注出二维码图像轮廓402。
在训练二维码AI检测模块时,可以根据多组图像样本对标准AI检测模型(如机器学习模型)进行训练,以得到二维码AI检测模块。其中,每组图像样本中包括包含二维码的图像以及与其对应的二维码图像轮廓。
在又一示例中,二维码检测模块包括图像均值滤波子模块、图像灰度化子模块、图像边缘检测子模块、图像二值化子模块、图像膨胀腐蚀子模块、图像轮廓提取子模块。
图像均值滤波子模块用于对图像进行均值滤波处理(也称线性滤波处理)以实现图像去噪。其中,图像均值滤波子模块采用邻域平均法,其基本原理是用均值代替原图像中的各个像素值。针对待处理的当前像素点(x,y),选择一个模板(该模板由其近邻的若干像素组成),求模板中所有像素的均值,再把该均值赋予当前像素点(x,y)作为处理后图像在该点上的像素值。
图像灰度化子模块用于将图像由RGB图像转换为灰度图像。
图像边缘检测子模块用于对灰度图像进行边缘检测,以标识灰度图像中亮度变化明显的像素点。其中,图像边缘检测子模块可以基于查找的方法或基于零穿越的方法来实现。基于查找的方法通过寻找图像一阶导数中的最大和最小值来检测边界,通常是将边界定位在梯度最大的方向。基于零穿越的方法通过寻找图像二阶导数零穿越来寻找边界,通常是拉普拉斯(Laplacian)过零点或者非线性差分表示的过零点。
图像二值化子模块用于将灰度图像进行二值化处理,将灰度图像上的像素点的灰度值设置为0或255,以将灰度图像转换成二值图像。示例性的,图像二值化子模块根据某个阈值对灰度图像进行二值化处理,将灰度值大于该阈值的像素点的灰度值设置为255,将灰度值小于等于该阈值的像素点的灰度值设置为0。
图像膨胀腐蚀子模块用于对二值图像进行膨胀和/或腐蚀处理。其中,图像的腐蚀和膨胀是两种基本的形态学运算,主要用来寻找二值图像中的极大区域和极小区域。
图像轮廓提取子模块用于在二值图像中提取出图像的外部轮廓特征。图像轮廓提取子模块可以采用常见的轮廓提取算法,如阈值分割、提取傅里叶变换的高频信息等。
在本示例中,回调图像帧B依次经过图像均值滤波子模块、图像灰度化子模块、图像边缘检测子模块、图像二值化子模块、图像膨胀腐蚀子模块以及图像轮廓提取子模块的处理,得到回调图像帧B中的二维码轮廓。
S304,图像处理模块判断在回调图像帧B中二维码图像是否满足zoom条件,若否,则执行S305,若是,则执行S309。
其中,示例性地,zoom条件包括二维码图像在回调图像帧中所占的图像比例小于预设比例阈值,满足zoom条件,表示需要对回调图像帧进行变焦处理,以放大二维码图像在回调图像帧中的图像比例。
在一种可选的实施方式中,图像处理模块根据二维码图像的轮廓计算二维码图像在回调图像帧中所占的图像比例r0。其中,r0=S0/S,S0为二维码图像的像素面积,S为回调图像帧的像素面积。
图像处理模块还根据二维码图像尺寸信息以及二维码图像在回调图像帧中的位置信息,计算在回调图像帧中与二维码对应的最大允许变焦比r1。其中,最大允许变焦比r1,用于指示对回调图像帧进行变焦处理以放大二维码图像时,所允许的最大变焦比值。在对回调图像帧进行变焦处理时,变焦比如果大于r1,则二维码图像会超出回调图像帧的边界,也即在变焦后的回调图像帧中二维码图像不再完整。
在本申请实施例中,对回调图像帧进行变焦处理以放大二维码图像,指的是变焦前后回调图像帧的尺寸大小不变,视场角发生变化(即图像的视场角变小)。由于变焦前后回调图像帧的尺寸不变,则可以理解为回调图像帧的边界位置不发生改变。
如图7b所示,确定二维码图像的宽w和高h,并计算二维码图像中心点距离回调图像帧左边界的距离w1,计算二维码图像中心点距离回调图像帧上边界的距离h1,计算二维码图像中心点距离回调图像帧右边界的距离w2,以及计算二维码图像中心点距离回调图像帧下边界的距离h2。其中,最大允许变焦比r1=min{w1/0.5w,h1/0.5h,w2/0.5w,h2/0.5h}。
可选地,zoom条件还包括对最大允许变焦比r1的限定,例如在回调图像帧中与二维码对应的最大允许变焦比r1大于阈值B。在本实施方式中,zoom条件可以为:二维码图像在回调图像帧中所占的图像比例r0小于阈值A,且与二维码对应的最大允许变焦比r1大于阈值B。
如果在回调图像帧B中二维码图像所占的图像比例r0不小于阈值A,或者,在回调图像帧中与二维码对应的最大允许变焦比r1不大于阈值B,则在回调图像帧B中二维码图像不满足zoom条件。
如果在回调图像帧B中二维码图像所占的图像比例r0小于阈值A,且在回调图像帧中与二维码对应的最大允许变焦比r1大于阈值B,则在回调图像帧B中二维码图像满足zoom条件。
S305,图像处理模块判断二维码图像是否满足畸变校正条件,若是,则执行S306,若否,则执行S311。
当在回调图像帧B中二维码图像不满足zoom条件时,图像处理模块继续判断二维码图像是否满足畸变校正条件。
在一种可选的实施方式中,图像处理模块根据二维码图像的最大旋转角M来判断二维码图像是否满足畸变校正条件,畸变校正条件可以为最大旋转角M大于阈值C。示例性的阈值C为10°。
其中,二维码图像的最大旋转角M为二维码图像的水平旋转角与竖直旋转角中的最大角度值。如图7c所示,角a1为二维码图像的左边界与竖直方向的夹角,角a2为二维码图像的上边界与水平方向的夹角,角a3为二维码图像的右边界与竖直方向的夹角,角a4为二维码图像的下边界与水平方向的夹角。角a1和角a3为竖直旋转角,角a2和角a4为水平旋转角。最大旋转角M=max{角a1,角a2,角a3,角a4}。
S306,图像处理模块调用二维码畸变校正模块对二维码图像进行畸变校正处理。
在二维码图像满足畸变校正条件时,图像处理模块调用二维码畸变校正模块对二维码图像进行畸变校正处理。其中,二维码畸变校正模块对二维码图像进行透视变换处理,以得到畸变校正后的二维码图像。
透视变换(Perspective Transformation)是指利用透视中心、像点、目标点三点共线的条件,按透视旋转定律使承影面(透视面)绕迹线(透视轴)旋转某一角度,破坏原有的投影光线束,仍能保持承影面上投影几何图形不变的变换。简而言之,就是将一个平面通过一个投影矩阵投影到指定平面上,其通用变换公式如下:
其中,透视变换矩阵
表示图像线性变换,T2=[a13a23]T用于产生图像透视变换,T3=[a31 a32]表示图像平移。
其中,u和v是原始图像坐标,参数w等于1,x和y为经过透视变换后得到的图片坐标,
上述将透视变换矩阵拆分为4部分,T1矩阵主要用于图像的缩放、旋转操作,T3矩阵用来进行图像平移操作,T2矩阵用来产生透视变换,a33等于1。由于透视变换矩阵一共有8个参数,所以需要4个坐标对才能求解。其中,透视变换后的x、y的表达式为:
由此,给定透视变换对应的四对像素坐标,即可求得透视变换矩阵Transform,进而根据透视变换矩阵对原图像进行透视变换处理,即可得到透视变换后的图像。
在本申请实施例中,图像处理模块提取二维码图像的四个顶点坐标,并按照顺时针的顺序中对这四个顶点进行排序,如左上顶点P1(u1,v1)、右上顶点P2(u2,v2)、右下顶点P3(u3,v3)以及左下顶点P4(u4,v4)。
图像处理模块根据顶点P1、P2、P3、P4的像素坐标确定畸变校正后的二维码图像的边长L。在本实施例中,图像处理模块将二维码图像的最长边的长度作为畸变校正后的二维码图像的边长L。其中,畸变校正后的二维码图像的边长L=max{P1P2,P2P3,P3P4,P4P1}
假设,图像处理模块将畸变校正后的二维码图像左上顶点P1’的坐标设置为(u0,v0),则图像处理模块可以根据畸变校正后的二维码图像的边长L计算得到右上顶点P2’(u0+L,v0)、右下顶点P3’(u0+L,v0+L)以及左下顶点P4’(u0,v0+L)。其中,左上顶点P1’(u0,v0)可以设置于图像的左上角区域,示例性的,u0大于20,v0大于20。
这样,图像处理模块得到四对像素坐标,分别为P1和P1’的像素坐标、P2和P2’的像素坐标、P3和P3’的像素坐标、P4和P4’的像素坐标。进而,图像处理模块基于这源二维码图像(即待畸变校正的二维码图像)的顶点P1、P2、P3、P4的像素坐标,以及目标二维码图像(即畸变校正后的二维码图像)的顶点P1’、P2’、P3’、P4’的像素坐标,计算透视变换矩阵Transform。
在计算得到透视变换矩阵Transform之后,图像处理模块即可根据该透视变换矩阵Transform对源二维码图像进行透视变换处理,得到目标二维码图像,也即畸变校正后的二维码图像,可以参照如图7d所示的透视变换处理示例。
S307,图像处理模块根据畸变校正处理后的二维码图像,重新生成回调图像帧C,并将回调图像帧C的图像格式由RGB转换为YUV,得到回调图像帧D。
图像处理模块新建空白图像帧,并将畸变校正处理后的二维码图像添加至该空白图像帧中,生成回调图像帧C。
其中,回调图像帧C的图像尺寸与回调图像帧B的图像尺寸相同,也即空白图像帧的图像尺寸与回调图像帧B的图像尺寸相同。畸变校正处理后的二维码图像在回调图像帧C中的位置,与畸变校正处理前的二维码图像在回调图像帧B中的位置一致(或称位置对齐)。
可选的,畸变校正处理后的二维码图像的中心点在回调图像帧C中的坐标,与畸变校正处理前的二维码图像的中心点在回调图像帧B中的坐标相同。图像处理模块确定畸变校正处理前的二维码图像的中心点在回调图像帧B中的坐标,图像处理模块根据该坐标将畸变校正处理后的二维码图像添加于空白图像帧中,生成回调图像帧C。
图7e示例性的示出了回调图像帧C和回调图像帧B的示例。图7e中(1)示出了一个回调图像帧B的示例,在回调图像帧B中二维码图像满足畸变校正条件,需要进行畸变校正处理。图7e中(2)示出了与图7e中(1)所示的回调图像帧B对应的回调图像帧C。如图7e中(2)所示,回调图像帧C的图像尺寸与回调图像帧B的图像尺寸相同,在图像尺寸与回调图像帧B相同的空白图像帧上添加畸变校正处理后的二维码图像即可得到回调图像帧C。其中,畸变校正处理后的二维码图像的中心点在回调图像帧C中的坐标,与畸变校正处理前的二维码图像的中心点在回调图像帧B中的坐标相同。
如果图像处理模块将畸变校正处理后的二维码图像随机添加于空白图像帧中,例如图像处理模块将畸变校正处理后的二维码图像添加于空白图像帧的左上角,以生成回调图像帧C,则结合图5所示的流程可知,微信SDK中识别模块会基于回调图像帧D(由回调图像帧C经图像格式转换而得,详见S308)进行二维码定位及识别。其中,识别模块基于回调图像帧D进行二维码定位处理时,二维码定位结果(也即扫码定位标识1041在图像中的显示位置)与畸变校正处理后的二维码图像在空白图像帧中位置有关。若图像处理模块将畸变校正处理后的二维码图像添加于空白图像帧的左上角,则扫码定位标识1041在图像中的显示位置也为图像左上角。由于显示的预览图像帧和回调图像帧A所对应的拍摄场景是一致的,图像采集时间也比较相近,故回调图像帧A(或回调图像帧B)中的画面信息与该预览图像帧的画面信息几乎完全相同,差异非常小。由此,回调图像帧A(或回调图像帧B)中的二维码位置与该预览图像帧中的二维码位置也是相近的,如二维码中点心位置相近,也可以称为回调图像帧A(或回调图像帧B)中的二维码区域与该预览图像帧中的二维码区域绝大部分重叠,甚至完全重叠。若图像处理模块将畸变校正处理后的二维码图像随机添加于空白图像帧中以生成回调图像帧C时,会出现回调图像帧C中二维码位置与回调图像帧B中二维码位置不一致的问题,也即与该预览图像帧中的二维码位置不一致,进而出现基于回调图像帧C中二维码位置确定的扫码定位标识1041与预览图像帧中二维码图像不对齐的问题。也就是说,微信应用扫码定位界面上显示的扫码定位标识1041会出现于非二维码区域中,可以参照图7f所示。
在本申请实施例中,畸变校正处理后的二维码图像位置与畸变校正处理前的二维码图像位置是一致的,如二维码图像中心点是对齐的,而畸变校正处理前的二维码图像位置与相应的预览图像帧中的二维码位置是一致的,使得微信SDK的识别模块回调图像帧D进行二维码定位及识别时,能够确保扫码定位标识1041的显示位置与微信应用显示的预览图像帧中的二维码位置相符,使扫码定位标识1041显示于预览图像中的二维码区域中,避免出现扫码定位标识1041在预览图像帧中显示位置不正确的问题。
S308,图像处理模块将回调图像帧C的图像格式由RGB转换为YUV,得到回调图像帧D,将回调图像帧D经相机服务发送至微信SDK。
在此情形下,回调图像帧D替代回调图像帧A被发送至微信SDK,由于回调图像帧D中的二维码图像已通过畸变校正,能够提升微信SDK的识别模块对二维码的定位及识别成功率,也能加快微信SDK的识别模块对二维码的定位及识别效率,提升了用户使用体验。
S309,图像处理模块调用二维码zoom模块对回调图像帧B进行变焦处理,得到回调图像帧E。
当在回调图像帧B中二维码图像满足zoom条件时,图像处理模块调用二维码zoom模块对回调图像帧B进行变焦处理,放大二维码图像在回调图像帧B中的图像比例,得到回调图像帧E。
示例性的,二维码zoom模块可以根据在回调图像帧中与二维码对应的最大允许变焦比r1确定一个合适的变焦比,该变焦比小于最大允许变焦比r1,并根据该变焦比对对回调图像帧B进行变焦处理,放大二维码图像在回调图像帧B中的图像比例,使得二维码图像在回调图像帧B中的图像比例更加符合扫描需求,以便于利于微信SDK的识别模块对二维码进行定位及识别。
示例性的,二维码zoom模块可以根据在回调图像帧中与二维码对应的最大允许变焦比r1对回调图像帧B进行变焦处理,放大二维码图像在回调图像帧B中的图像比例。这样,在保证二维码图像完整的前提下,将回调图像帧中的二维码图像尽量放大,使得二维码的图像的某个边界无限接近回调图像帧的某个边界,甚至与这个边界重合,更利于微信SDK的识别模块对二维码进行定位及识别。
S310,图像处理模块将回调图像帧E的图像格式由RGB转换为YUV,得到回调图像帧F,将回调图像帧F经相机服务发送至微信SDK。
在此情形下,回调图像帧F替代回调图像帧A被发送至微信SDK,由于回调图像帧F中的二维码图像已放大,能加快微信SDK的识别模块对二维码的定位及识别效率,提升了用户使用体验。
在一种可选的实施方式中,图像处理模块也可以调用二维码zoom模块对预览图像帧进行变焦处理,并将变焦处理后的预览图像帧进行送显。
其中,图像处理模块在生成RGB格式的预览图像帧之后,判断在预览图像帧中二维码图像是否满足zoom条件。例如,zoom条件为:二维码图像在回调图像帧中所占的图像比例r0小于阈值A;再例如,zoom条件为:二维码图像在回调图像帧中所占的图像比例r0小于阈值A,且与二维码对应的最大允许变焦比r1大于阈值B。
如果在预览图像帧中二维码图像满足zoom条件,则图像处理模块调用二维码zoom模块对预览图像帧进行变焦处理,并将变焦处理后的预览图像帧进行送显。
在对回调图像帧进行变焦处理以放大二维码图像时,如果不对预览图像帧进行变焦处理以放大二维码图像,也有可能会出现扫码定位标识1041的显示位置不当的问题,使得扫码定位标识1041显示于预览图像帧的非二维码区域上。
这样,在对回调图像帧进行变焦处理以放大二维码图像的同时,也对预览图像帧进行变焦处理以放大二维码图像,能够在微信SDK的识别模块基于变焦处理后的回调图像帧F对二维码进行定位及识别时,够确保扫码定位标识的显示位置与微信应用显示的预览图像帧中的二维码位置相符,避免出现扫码定位标识在预览图像帧中的显示位置不正确的问题。
S311,图像处理模块将回调图像帧A经相机服务发送至微信SDK。
如果在回调图像帧B中二维码图像既不满足zoom条件,二维码图像也不满足畸变校正条件,则图像处理模块直接将回调图像帧A经相机服务发送至微信SDK,以使微信SDK的识别模块基于回调图像帧A对二维码进行定位及识别。
在此情形下,如果图像处理模块将回调图像帧A进行缓存,则可以直接将缓存中的回调图像帧A经相机服务发送至微信SDK。如果图像处理模块未将回调图像帧A进行缓存,则将回调图像帧B的图像格式由RGB转换为YUV,以重新得到回调图像帧A后再将回调图像帧A经相机服务发送至微信SDK。
在本实施例中,继续参照图5,微信SDK接收到的回调图像帧或者是经过变焦处理的回调图像帧,或者是对二维码图像进行畸变校正后的回调图像帧,或者是无需进行变焦及畸变校正处理的回调图像帧,故微信SDK接收到的回调图像帧更加便于识别模块对二维码进行定位及识别,以此提升了微信SDK的识别模块对二维码的定位及识别成功率,也能加快微信SDK的识别模块对二维码的定位及识别效率。
这样,在本申请实施例提供的扫码方法中,电子设备在将扫码应用的回调图像帧返回扫码应用之前,对回调图像帧进行变焦处理或畸变校正处理,以此提高了扫码应用对回调图像帧的扫码成功率,解决了由于用户扫码角度不佳而导致的扫码长时不成功甚至扫码失败的问题,提升了用户使用体验。
在前述实施方式的基础上,图8示例性的示出了另一种可选的实施方式。继续以第三方应用为微信应用,扫码功能为“扫一扫”功能为例,如图8所示,用户打开微信应用的“扫一扫”功能,场景识别模块确定与当前场景对应的标志位FLAG=1。相机服务基于相机应用发送的预览指示生成预览图像帧请求并发送至相机HAL,以及基于相机应用发送的指示信息“FLAG=1”生成回调图像帧请求并发送至相机HAL。相机HAL中Sensor node通过相机驱动控制相机传感器曝光出图,得到与预览图像帧请求对应的预览图像数据和与回调图像帧请求对应的回调图像数据。其中,预览图像数据通过图像处理模块的处理可以得到预览图像帧,预览图像帧被发送至微信应用中进行显示。
在本实施方式中,在图像处理模块对接收到的回调图像数据进行处理而得到回调图像帧n之后,图像处理模块还对其进行畸变校正处理或变焦处理(如根据图6所示的处理流程进行处理),并将处理后的回调图像帧n通过相机服务发送至微信SDK进行二维码定位及识别。关于回调图像帧n的下一帧,也即回调图像帧n+1,在图像处理模块对接收到的回调图像数据进行处理而得到回调图像帧n+1之后,直接将回调图像帧n+1通过相机服务发送至微信SDK进行二维码定位及识别。针对回调图像帧n+1的下一帧,也即回调图像帧n+2,在图像处理模块对接收到的回调图像数据进行处理而得到回调图像帧n+2之后,图像处理模块继续对其进行畸变校正处理或变焦处理(如根据图6所示的处理流程进行处理),并将处理后的回调图像帧n+2通过相机服务发送至微信SDK进行二维码定位及识别。关于其他回调图像帧,可以据此类推。
其中,关于回调图像帧1,图像处理模块可以直接将其通过相机服务发送至微信SDK进行二维码定位及识别,也可以对其进行畸变校正处理或变焦处理(如根据图6所示的处理流程进行处理),并将处理后的回调图像帧1通过相机服务发送至微信SDK进行二维码定位及识别,本实施例对此不做限定。
在微信SDK的识别接口依次接收到的各个回调图像帧中,经如图6所示的处理流程进行处理的回调图像帧,以及未经如图6所示的处理流程进行处理的回调图像帧交替出现,微信SDK的识别模块按照回调图像帧的接收顺序依次对每个回调图像帧进行识别,直至根据某个回调图像帧完成对二维码的定位及识别操作。
需要指出的是,微信SDK的识别模块可能是基于经如图6所示的处理流程进行处理的回调图像帧N1完成的对二维码的定位及识别操作,此时识别模块输出的二维码定位结果是基于回调图像帧N1得到的;微信SDK的识别模块也可能是基于未经如图6所示的处理流程进行处理的回调图像帧N2完成的对二维码的定位及识别操作,此时识别模块输出的二维码定位结果就是基于回调图像帧N2得到的。在微信SDK的识别模块基于某一个回调图像帧完成对二维码的定位及识别操作之后,就不再基于下一个回调图像帧执行对二维码的定位及识别操作。
关于图8所示扫码流程未尽详细解释之处,可以参照前文对图5所示扫码流程的解释,在此不再赘述。
这样,针对相邻的两个回调图像帧,图像处理模块采用不同的方法处理,其中一个回调图像帧经如图6所示的流程处理后再被发送至微信SDK进行二维码定位及识别,其中另一个回调图像帧被直接发送至微信SDK进行二维码定位及识别(也即采用原生流程进行处理),这样能够避免微信SDK的识别模块无法识别经如图6所示的流程处理后的回调图像帧,而导致二维码长时识别不成功的问题。一旦微信SDK的识别模块能够识别未经如图6所示的流程处理后的回调图像帧,二维码还是能够被识别成功的,以此确保了扫码方法的成功率。
可选的,在本实施方式中,在图像处理模块对接收到的回调图像数据进行处理而得到回调图像帧n之后,图像处理模块还对其进行畸变校正处理或变焦处理(如根据图6所示的处理流程进行处理),并将处理后的回调图像帧n通过相机服务发送至微信SDK进行二维码定位及识别。关于回调图像帧n之后的回调图像帧,例如回调图像帧n+m1(m1为大于1的整数),在图像处理模块对接收到的回调图像数据进行处理而得到回调图像帧n+m1之后,直接将回调图像帧n+m1通过相机服务发送至微信SDK进行二维码定位及识别。其中,回调图像帧n与回调图像帧n+m1之间的回调图像帧,同回调图像帧n的处理方法,在此不再赘述。
针对回调图像帧n+m1之后的回调图像帧,例如回调图像帧n+m1+m2(m2为大于1的整数,m1与m2可以相等,也可以不相等),在图像处理模块对接收到的回调图像数据进行处理而得到回调图像帧n+m1+m2之后,图像处理模块继续对其进行畸变校正处理或变焦处理(如根据图6所示的处理流程进行处理),并将处理后的回调图像帧n+m1+m2通过相机服务发送至微信SDK进行二维码定位及识别。其中,回调图像帧n+m1与回调图像帧n+m1+m2之间的回调图像帧,同回调图像帧n+m1的处理方法,在此不再赘述。
关于其他回调图像帧,可以据此类推。如此,在微信SDK的识别接口依次接收到的各个回调图像帧中,经如图6所示的处理流程进行处理的回调图像帧,以及未经如图6所示的处理流程进行处理的回调图像帧交替出现,微信SDK的识别模块按照回调图像帧的接收顺序依次对每个回调图像帧进行识别,直至根据某个回调图像帧完成对二维码的定位及识别操作。这样能够避免微信SDK的识别模块无法识别经如图6所示的流程处理后的回调图像帧,而导致二维码长时识别不成功的问题。
本实施例还提供一种计算机存储介质,该计算机存储介质中存储有计算机指令,当该计算机指令在电子设备上运行时,使得电子设备执行上述相关方法步骤实现上述实施例中的扫码方法。
本实施例还提供了一种计算机程序产品,当该计算机程序产品在计算机上运行时,使得计算机执行上述相关步骤,以实现上述实施例中的扫码方法。
另外,本申请的实施例还提供一种装置,这个装置具体可以是芯片,组件或模块,该装置可包括相连的处理器和存储器;其中,存储器用于存储计算机执行指令,当装置运行时,处理器可执行存储器存储的计算机执行指令,以使芯片执行上述各方法实施例中的扫码方法。
其中,本实施例提供的电子设备(如手机等)、计算机存储介质、计算机程序产品或芯片均用于执行上文所提供的对应的方法,因此,其所能达到的有益效果可参考上文所提供的对应的方法中的有益效果,此处不再赘述。
通过以上实施方式的描述,所属领域的技术人员可以了解到,为描述的方便和简洁,仅以上述各功能模块的划分进行举例说明,实际应用中,可以根据需要而将上述功能分配由不同的功能模块完成,即将装置的内部结构划分成不同的功能模块,以完成以上描述的全部或者部分功能。
在本申请所提供的几个实施例中,应该理解到,所揭露的装置和方法,可以通过其它的方式实现。例如,以上所描述的装置实施例仅仅是示意性的,例如,模块或单元的划分,仅仅为一种逻辑功能划分,实际实现时可以有另外的划分方式,例如多个单元或组件可以结合或者可以集成到另一个装置,或一些特征可以忽略,或不执行。另一点,所显示或讨论的相互之间的耦合或直接耦合或通信连接可以是通过一些接口,装置或单元的间接耦合或通信连接,可以是电性,机械或其它的形式。
以上所述,以上实施例仅用以说明本申请的技术方案,而非对其限制;尽管参照前述实施例对本申请进行了详细的说明,本领域的普通技术人员应当理解:其依然可以对前述各实施例所记载的技术方案进行修改,或者对其中部分技术特征进行等同替换;而这些修改或者替换,并不使相应技术方案的本质脱离本申请各实施例技术方案的范围。
Claims (13)
1.一种扫码方法,其特征在于,包括:
响应于对目标应用扫码功能的开启操作,获取第一回调图像帧及第一预览图像帧;
从所述第一回调图像帧中提取第一二维码图像;
对所述第一二维码图像进行畸变校正处理,得到第二二维码图像;
创建空白图像帧,确定所述第一二维码图像在所述第一回调图像帧中的位置,并将所述第二二维码图像添加于所述空白图像帧上,得到第二回调图像帧,以使所述第二二维码图像在所述第二回调图像帧中的位置与所述第一二维码图像在所述第一回调图像帧中的位置一致;其中,所述空白图像帧与所述第一回调图像帧的图像尺寸相同;
将所述第二回调图像帧发送至所述目标应用进行扫码识别;
显示所述第一预览图像;
在所述目标应用基于所述第二回调图像帧识别到二维码时,在所述第一预览图像上显示二维码定位标识;其中,所述二维码定位标识的位置,是基于所述第二二维码图像在所述第二回调图像帧中的位置确定的。
2.根据权利要求1所述的方法,其特征在于,还包括:
获取第三回调图像帧,所述第三回调图像帧为所述第一回调图像帧之后的回调图像帧;
将所述第三回调图像帧发送至所述目标应用进行扫码识别;
获取第四回调图像帧,所述第四回调图像帧为所述第三回调图像帧之后的回调图像帧;
从所述第四回调图像帧中提取第三二维码图像,对所述第三二维码图像进行畸变校正处理,得到第四二维码图像;
创建所述空白图像帧,确定第三二维码图像在所述第四回调图像帧中位置,并将所述第四二维码图像添加于所述空白图像帧中,得到第五回调图像帧,以使所述第四二维码图像在所述第五回调图像帧中的位置与所述第三二维码图像在所述第四回调图像帧中位置一致;
将所述第五回调图像帧发送至所述目标应用进行扫码识别。
3.根据权利要求1所述的方法,其特征在于,第二二维码图像在所述第二回调图像帧中的位置与所述第一二维码图像在所述第一回调图像帧中的位置一致,包括:
第二二维码图像的中心点在所述第二回调图像帧中的坐标与所述第一二维码图像的中心点在所述第一回调图像帧中的坐标一致。
4.根据权利要求1所述的方法,其特征在于,对所述第一回调图像帧中的第一二维码图像进行畸变校正处理,包括:
在所述第一回调图像帧中所述第一二维码图像不满足变焦条件时,对所述第一回调图像帧中的第一二维码图像进行畸变校正处理。
5.根据权利要求4所述的方法,其特征在于,还包括:
在所述第一回调图像帧中所述第一二维码图像满足变焦条件时,对所述第一回调图像帧进行变焦处理以放大二维码图像,得到第六回调图像帧;
将所述第六回调图像帧发送至所述目标应用进行扫码识别。
6.根据权利要求5所述的方法,其特征在于,还包括:
显示第二预览图像;
在所述目标应用基于所述第六回调图像帧识别到二维码时,在所述第二预览图像上显示所述二维码定位标识;其中,所述二维码定位标识的位置,与所述第六回调图像帧中的二维码图像位置一致。
7.根据权利要求1所述的方法,其特征在于,对所述第一二维码图像进行畸变校正处理,包括:
在所述第一二维码图像的最大旋转角大于第一阈值时,根据透视变换对所述第一回调图像帧中的第一二维码图像进行畸变校正处理;
其中,所述最大旋转角为第一夹角、第二夹角、第三夹角、第四夹角中的最大值,所述第一夹角为所述第一二维码图像左边界与竖直方向的夹角,所述第二夹角为所述第一二维码图像上边界与水平方向的夹角,所述第三夹角为所述第一二维码图像右边界与竖直方向的夹角,所述第四夹角为所述第一二维码图像下边界与水平方向的夹角。
8.根据权利要求4或5所述的方法,其特征在于,所述变焦条件包括:
二维码图像在回调图像帧中所占的图像比例小于第二阈值,且与二维码对应的目标变焦比大于第三阈值;
其中,所述目标变焦比用于指示对回调图像帧进行变焦处理以放大二维码图像时,所允许的最大变焦比值。
9.根据权利要求8所述的方法,其特征在于,对所述第一回调图像帧进行变焦处理,包括:
根据所述目标变焦比对所述第一回调图像帧进行变焦处理。
10.根据权利要求4所述的方法,其特征在于,对所述第一回调图像帧中的第一二维码图像进行畸变校正处理,包括:
确定所述第一二维码图像的四个顶点坐标;
根据所述四个顶点坐标,确定所述第二二维码图像的边长;
确定所述第二二维码图像的一个顶点的坐标,并基于所述边长计算所述第二二维码图像的其他三个顶点的坐标;
根据所述第一二维码图像的四个顶点坐标,以及所述第二二维码图像的四个顶点坐标,计算透视变换矩阵;
根据所述透视变换矩阵对所述第一二维码图像进行透视变换处理,得到所述第二二维码图像。
11.根据权利要求10所述的方法,其特征在于,根据所述四个顶点坐标,确定所述第一二维码图像的边长,包括:
根据所述四个顶点坐标,计算所述第一二维码图像的四个边长;
将所述四个边长中的最大边长作为所述第二二维码图像的边长。
12.一种电子设备,其特征在于,包括:
一个或多个处理器;
存储器;
以及一个或多个计算机程序,其中所述一个或多个计算机程序存储在所述存储器上,当所述计算机程序被所述一个或多个处理器执行时,使得所述电子设备执行如权利要求1-11中任一项所述的扫码方法。
13.一种计算机可读存储介质,包括计算机程序,其特征在于,当所述计算机程序在电子设备上运行时,使得所述电子设备执行如权利要求1-11中任一项所述的扫码方法。
Priority Applications (3)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN202311847829.0A CN118551785A (zh) | 2023-02-27 | 2023-02-27 | 扫码方法、电子设备及存储介质 |
CN202310207187.1A CN116341586B (zh) | 2023-02-27 | 2023-02-27 | 扫码方法、电子设备及存储介质 |
PCT/CN2023/133755 WO2024179064A1 (zh) | 2023-02-27 | 2023-11-23 | 扫码方法、电子设备及存储介质 |
Applications Claiming Priority (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN202310207187.1A CN116341586B (zh) | 2023-02-27 | 2023-02-27 | 扫码方法、电子设备及存储介质 |
Related Child Applications (1)
Application Number | Title | Priority Date | Filing Date |
---|---|---|---|
CN202311847829.0A Division CN118551785A (zh) | 2023-02-27 | 2023-02-27 | 扫码方法、电子设备及存储介质 |
Publications (2)
Publication Number | Publication Date |
---|---|
CN116341586A CN116341586A (zh) | 2023-06-27 |
CN116341586B true CN116341586B (zh) | 2023-12-01 |
Family
ID=86883238
Family Applications (2)
Application Number | Title | Priority Date | Filing Date |
---|---|---|---|
CN202311847829.0A Pending CN118551785A (zh) | 2023-02-27 | 2023-02-27 | 扫码方法、电子设备及存储介质 |
CN202310207187.1A Active CN116341586B (zh) | 2023-02-27 | 2023-02-27 | 扫码方法、电子设备及存储介质 |
Family Applications Before (1)
Application Number | Title | Priority Date | Filing Date |
---|---|---|---|
CN202311847829.0A Pending CN118551785A (zh) | 2023-02-27 | 2023-02-27 | 扫码方法、电子设备及存储介质 |
Country Status (2)
Country | Link |
---|---|
CN (2) | CN118551785A (zh) |
WO (1) | WO2024179064A1 (zh) |
Families Citing this family (2)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN118551785A (zh) * | 2023-02-27 | 2024-08-27 | 荣耀终端有限公司 | 扫码方法、电子设备及存储介质 |
CN116563048B (zh) * | 2023-07-05 | 2024-05-03 | 江西科技学院 | 一种财务报销方法、系统及计算机 |
Citations (8)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CA2719138A1 (en) * | 2008-03-21 | 2009-09-24 | Google Inc. | Lightweight three-dimensional display |
CN105930757A (zh) * | 2016-04-19 | 2016-09-07 | 飞天诚信科技股份有限公司 | 一种扫描二维码的方法和装置 |
CN108399349A (zh) * | 2018-03-22 | 2018-08-14 | 腾讯科技(深圳)有限公司 | 图像识别方法及装置 |
CN112492193A (zh) * | 2019-09-12 | 2021-03-12 | 华为技术有限公司 | 一种回调流的处理方法及设备 |
CN113919382A (zh) * | 2021-04-29 | 2022-01-11 | 荣耀终端有限公司 | 一种扫码的方法及装置 |
WO2022161260A1 (zh) * | 2021-01-27 | 2022-08-04 | 维沃移动通信有限公司 | 对焦方法、装置、电子设备及介质 |
WO2022247540A1 (zh) * | 2021-05-28 | 2022-12-01 | 腾讯科技(深圳)有限公司 | 设备控制方法、装置、计算机设备及存储介质 |
CN115705567A (zh) * | 2021-08-06 | 2023-02-17 | 荣耀终端有限公司 | 支付方法及相关装置 |
Family Cites Families (4)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
US9805240B1 (en) * | 2016-04-18 | 2017-10-31 | Symbol Technologies, Llc | Barcode scanning and dimensioning |
KR101926018B1 (ko) * | 2016-08-12 | 2018-12-06 | 라인 가부시키가이샤 | 동영상 녹화 방법 및 시스템 |
CN109145675B (zh) * | 2018-06-28 | 2020-08-25 | 中国地质大学(武汉) | 一种嵌套式二维码攻击双重检测方法及系统 |
CN118551785A (zh) * | 2023-02-27 | 2024-08-27 | 荣耀终端有限公司 | 扫码方法、电子设备及存储介质 |
-
2023
- 2023-02-27 CN CN202311847829.0A patent/CN118551785A/zh active Pending
- 2023-02-27 CN CN202310207187.1A patent/CN116341586B/zh active Active
- 2023-11-23 WO PCT/CN2023/133755 patent/WO2024179064A1/zh unknown
Patent Citations (8)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CA2719138A1 (en) * | 2008-03-21 | 2009-09-24 | Google Inc. | Lightweight three-dimensional display |
CN105930757A (zh) * | 2016-04-19 | 2016-09-07 | 飞天诚信科技股份有限公司 | 一种扫描二维码的方法和装置 |
CN108399349A (zh) * | 2018-03-22 | 2018-08-14 | 腾讯科技(深圳)有限公司 | 图像识别方法及装置 |
CN112492193A (zh) * | 2019-09-12 | 2021-03-12 | 华为技术有限公司 | 一种回调流的处理方法及设备 |
WO2022161260A1 (zh) * | 2021-01-27 | 2022-08-04 | 维沃移动通信有限公司 | 对焦方法、装置、电子设备及介质 |
CN113919382A (zh) * | 2021-04-29 | 2022-01-11 | 荣耀终端有限公司 | 一种扫码的方法及装置 |
WO2022247540A1 (zh) * | 2021-05-28 | 2022-12-01 | 腾讯科技(深圳)有限公司 | 设备控制方法、装置、计算机设备及存储介质 |
CN115705567A (zh) * | 2021-08-06 | 2023-02-17 | 荣耀终端有限公司 | 支付方法及相关装置 |
Non-Patent Citations (2)
Title |
---|
Two-dimensional product barcodes can up-scan safety;C. Ruhnau;《Australian Journal of Pharmacy》;全文 * |
一种复杂背景下QR码校正方法;孔庆鑫;潘卫清;戴恩文;沈艳婷;;现代计算机(第25期);全文 * |
Also Published As
Publication number | Publication date |
---|---|
CN118551785A (zh) | 2024-08-27 |
CN116341586A (zh) | 2023-06-27 |
WO2024179064A1 (zh) | 2024-09-06 |
Similar Documents
Publication | Publication Date | Title |
---|---|---|
CN113810587B (zh) | 一种图像处理方法及装置 | |
CN116341586B (zh) | 扫码方法、电子设备及存储介质 | |
JP7118244B2 (ja) | グラフィックコード認識方法及び装置、並びに、端末及びプログラム | |
CN110300264B (zh) | 图像处理方法、装置、移动终端以及存储介质 | |
KR20150059466A (ko) | 전자장치에서 이미지 내의 특정 객체를 인식하기 위한 방법 및 장치 | |
WO2020190547A1 (en) | Intelligent video presentation system | |
CN113051950A (zh) | 一种多条码识别方法以及相关设备 | |
CN116048244B (zh) | 一种注视点估计方法及相关设备 | |
CN110598139A (zh) | 基于5G云计算的Web浏览器增强现实实时定位的方法 | |
CN116306733B (zh) | 一种放大二维码的方法及电子设备 | |
CN113538227B (zh) | 一种基于语义分割的图像处理方法及相关设备 | |
CN114782296B (zh) | 图像融合方法、装置及存储介质 | |
CN116916151B (zh) | 拍摄方法、电子设备和存储介质 | |
CN113947097B (zh) | 一种二维码识别的方法及电子设备 | |
CN115908120B (zh) | 图像处理方法和电子设备 | |
CN111107264A (zh) | 图像处理方法、装置、存储介质以及终端 | |
CN114066731A (zh) | 生成全景图的方法、装置、电子设备及存储介质 | |
CN116740777B (zh) | 人脸质量检测模型的训练方法及其相关设备 | |
CN117689545B (zh) | 图像处理方法、电子设备和计算机可读存储介质 | |
CN117078558B (zh) | 图像处理的方法及电子设备 | |
CN116680431B (zh) | 一种视觉定位方法、电子设备、介质及产品 | |
CN117425071B (zh) | 一种图像采集方法、电子设备及存储介质 | |
US20240212250A1 (en) | Image processing method and apparatus, electronic device and readable storage medium | |
CN117726507B (zh) | 图像处理方法及装置 | |
CN116363017B (zh) | 图像处理方法及装置 |
Legal Events
Date | Code | Title | Description |
---|---|---|---|
PB01 | Publication | ||
PB01 | Publication | ||
SE01 | Entry into force of request for substantive examination | ||
SE01 | Entry into force of request for substantive examination | ||
GR01 | Patent grant | ||
GR01 | Patent grant |