客户端扫码识别方法、装置、设备及存储介质与流程

文档序号:19880523发布日期:2020-02-08 07:01阅读:163来源:国知局
客户端扫码识别方法、装置、设备及存储介质与流程

本发明涉移动终端设备领域,尤其涉及一种客户端扫码识别方法、装置、设备及存储介质。



背景技术:

目前移动端扫码识别技术已经存在较为成熟的开源工具库,例如google官方推出的zxing,业界最早使用的zbar等,都可实现基于移动端的扫码识别功能。虽然被诸多互联网公司或软件公司拿来广泛使用,但不可否认依然存在一些问题及缺陷。zxing实现了多种格式的条码图形处理库,通过对camera相关功能的封装,使用手机摄像头即可完成条形码或二维码的扫描及识别。zbar也是一个开源工具库,基于c语言开发,同样实现了扫描读取条形码及二维码的功能。

目前现有扫码识别方案zxing,zbar功能虽然完善,但在扫码细节,识别效率,包括众多机型适配上还不够完善,依然存在一些问题,这不仅困扰了大多数开发者集成,也给正在使用的客户带来体验及性能上的影响。zxing普遍的问题是扫码识别率低下,扫码区域对不准,不易调控,在某些机型上会出现预览画面变形拉伸等严重问题。由于zbar是c语言开发,在解码效率上会高于zxing,但在机型适配及扫码区域控制上依然存在问题。



技术实现要素:

本发明实施例的目的是提供一种客户端扫码识别方法、装置、设备及存储介质,能有效解决现有扫码识别技术中识别效率低、画面变形等问题,提升用户扫码体验。

为实现上述目的,本发明实施例提供了一种客户端扫码识别方法,包括:

响应扫码操作时,获取摄像头的分辨率和屏幕的分辨率;

计算不同分辨率下所述摄像头的画面比和所述屏幕的画面比的差值;

获取所述摄像头的画面比和所述屏幕的画面比的差值大于预设的最小分辨率差值中的摄像头的分辨率为初始分辨率;

计算所述初始分辨率下的摄像头的成像尺寸与所述屏幕的尺寸的差值;

获取所述初始分辨率下的摄像头的成像尺寸与所述屏幕的尺寸的差值小于预设的最大分辨率差值中的初始分辨率为目标分辨率;

以所述目标分辨率进行客户端的扫码识别操作。

与现有技术相比,本发明实施例公开的客户端扫码识别方法,首先,计算每一摄像头的画面比和屏幕的画面比的差值,获取摄像头的画面比和所述屏幕的画面比的差值大于预设的最小分辨率差值中的摄像头的分辨率为初始分辨率,目的是获取摄像头的画面与屏幕画面比例较均匀的摄像头的分辨率集合;然后,计算初始分辨率下的摄像头的成像尺寸与屏幕的尺寸的差值,并获取初始分辨率下的摄像头的成像尺寸与屏幕的尺寸的差值小于预设的最大分辨率差值中的初始分辨率为目标分辨率,目的是在第一步的结果中再过滤出摄像头尺寸最接近屏幕尺寸的一套摄像头分辨率,作为最终过滤的摄像头预览分辨率;最后,以目标分辨率进行客户端的扫码识别操作。本发明实施例公开的客户端扫码识别方法,不仅解决了现有技术中在进行扫码识别时的预览拉伸变形问题,适配不同机型的分辨率,在不同机型分辨率下都能保证预览比例协调,预览画面清晰,提高扫码识别率。

作为上述方案的改进,当所述客户端处于竖屏状态时,所述以所述目标分辨率进行客户端的扫码识别操作前,还包括:

旋转所述摄像头的成像界面,直至与所述屏幕处于同一方向。

作为上述方案的改进,所述画面比为宽高比或高宽比;当所述客户端处于竖屏状态时,所述计算不同分辨率下所述摄像头的画面比和所述屏幕的画面比的差值,具体包括:

当所述摄像头未经旋转处理时,计算不同分辨率下所述摄像头的宽高比和所述屏幕的高宽比的差值;

当所述摄像头经旋转处理成竖屏成像时,计算不同分辨率下所述摄像头的宽高比和所述屏幕的宽高比的差值。

作为上述方案的改进,当所述客户端处于竖屏状态时,所述摄像头的成像尺寸为所述摄像头的宽值,所述屏幕的尺寸为所述屏幕的高值;则,所述计算所述初始分辨率下的摄像头的成像尺寸与所述屏幕的尺寸的差值,具体包括:

计算所述初始分辨率下的摄像头的宽值和所述与所述屏幕的高值的差值。

作为上述方案的改进,所述方法还包括:

响应扫码操作时,确定所述屏幕上扫码框的位置信息;

根据所述扫码框的位置信息确定所述摄像头在预览界面中的有效区域;

根据所述有效区域进行客户端的扫码识别操作。

作为上述方案的改进,所述根据所述扫码框的位置信息确定所述摄像头在预览界面中的有效区域,具体包括:

当所述摄像头的分辨率大于所述屏幕的分辨率时,对所述扫码框进行缩小操作,并根据所述扫码框的位置信息确定所述摄像头在预览界面中的有效区域;

当所述摄像头的分辨率小于所述屏幕的分辨率时,对所述扫码框进行放大操作,并根据所述扫码框的位置信息确定所述摄像头在预览界面中的有效区域。

为实现上述目的,本发明实施例还提供了一种客户端扫码识别装置,包括:

基本信息获取单元,用于响应扫码操作时,获取摄像头的分辨率和屏幕的分辨率;

第一计算单元,用于计算不同分辨率下所述摄像头的画面比和所述屏幕的画面比的差值;

初始分辨率获取单元,用于获取所述摄像头的画面比和所述屏幕的画面比的差值大于预设的最小分辨率差值中的摄像头的分辨率为初始分辨率;

第二计算单元,用于计算所述初始分辨率下的摄像头的成像尺寸与所述屏幕的尺寸的差值;

目标分辨率获取单元,用于获取所述初始分辨率下的摄像头的成像尺寸与所述屏幕的尺寸的差值小于预设的最大分辨率差值中的初始分辨率为目标分辨率;

扫码识别单元,以所述目标分辨率进行客户端的扫码识别操作。

作为上述方案的改进,所述装置还包括位置信息获取单元和有效区域获取单元;其中,

所述位置信息获取单元,用于响应扫码操作时,确定所述屏幕上扫码框的位置信息;

所述有效区域获取单元,用于根据所述扫码框的位置信息确定所述摄像头在预览界面中的有效区域;

所述扫码识别单元,还用于根据所述有效区域进行客户端的扫码识别操作。

为实现上述目的,本发明实施例还提供了一种客户端扫码识别设备,包括处理器、存储器以及存储在所述存储器中且被配置为由所述处理器执行的计算机程序,所述处理器执行所述计算机程序时实现如上述任一实施例所述的客户端扫码识别方法。

为实现上述目的,本发明实施例还提供了一种计算机可读存储介质,所述计算机可读存储介质包括存储的计算机程序,其中,在所述计算机程序运行时控制所述计算机可读存储介质所在设备执行如上述任一实施例所述的客户端扫码识别方法。

附图说明

图1是不同摄像头分辨率与屏幕分辨率之间的匹配示意图;

图2是本发明实施例提供的一种客户端扫码识别方法的流程图;

图3是本发明实施例提供的另一种客户端扫码识别方法的流程图;

图4是本发明实施例提供的选取有效区域的示意图;

图5是本发明实施例提供的一种客户端扫码识别装置的结构示意图;

图6是本发明实施例提供的一种客户端扫码识别设备的结构示意图。

具体实施方式

下面将结合本发明实施例中的附图,对本发明实施例中的技术方案进行清楚、完整地描述,显然,所描述的实施例仅仅是本发明一部分实施例,而不是全部的实施例。基于本发明中的实施例,本领域普通技术人员在没有作出创造性劳动前提下所获得的所有其他实施例,都属于本发明保护的范围。

需要说明的是,大多数应用在相机预览时出现拉伸变形问题,包括某些特殊机型上预览翻转变形,往往都是没有计算出最合适的相机预览分辨率。目前市场上手机摄像头绝大部分都带有自动变焦功能,当然就意味着能够拍摄出不同分辨率的图片。当打开相机预览时,手机屏幕分辨率是固定的(目前主流720x1280,1080x1920等),这时就需要动态去计算出一套合适的相机分辨率,去适配屏幕分辨率,来保证预览时画面不会被拉伸变形。图1中示出不同摄像头分辨率与屏幕分辨率之间的匹配示意图。可见,当屏幕分辨率与摄像头分辨率比例不适配时,会导致预览界面被拉宽或者拉长;当屏幕分辨率与摄像头分辨率比例适配时,预览界面正常显示,不会拉伸变形。

参见图2,图2是本发明实施例提供的一种客户端扫码识别方法的流程图;所述客户端扫码识别方法包括:

s11、响应扫码操作时,获取摄像头的分辨率和屏幕的分辨率;

s12、计算不同分辨率下所述摄像头的画面比和所述屏幕的画面比的差值;

s13、获取所述摄像头的画面比和所述屏幕的画面比的差值大于预设的最小分辨率差值中的摄像头的分辨率为初始分辨率;

s14、计算所述初始分辨率下的摄像头的成像尺寸与所述屏幕的尺寸的差值;

s15、获取所述初始分辨率下的摄像头的成像尺寸与所述屏幕的尺寸的差值小于预设的最大分辨率差值中的初始分辨率为目标分辨率;

s16、以所述目标分辨率进行客户端的扫码识别操作。

具体的,在步骤s11中,首先获取屏幕分辨率screensize,由于摄像头所支持的分辨率有多个,对所有摄像头分辨率camerasizes进行遍历。

具体的,在步骤s12~s13中,计算不同分辨率下所述摄像头的画面比和所述屏幕的画面比的差值,示例性的,所述画面比为宽高比或高宽比。获取所述摄像头的画面比和所述屏幕的画面比的差值大于预设的最小分辨率差值中的摄像头的分辨率为初始分辨率,目的是获取摄像头的画面与屏幕画面比例较均匀的摄像头的分辨率集合。

值得说明的是,由于默认手机竖屏下屏幕高大于屏幕宽,所以在手机处于竖屏状态下(摄像头默认为横屏成像),计算出的是摄像头的宽高比与屏幕的高宽比的差值,若摄像头经过旋转处理后也为竖屏状态,则应计算的是摄像头的宽高比与屏幕的宽高比的差值。即当所述客户端处于竖屏状态时,所述计算不同分辨率下所述摄像头的画面比和所述屏幕的画面比的差值,具体包括:

s121、当所述摄像头未经旋转处理时,计算不同分辨率下所述摄像头的宽高比和所述屏幕的高宽比的差值;满足以下公式:

math.abs(camerasize.w/camerasize.h–screensize.h/screensize.w)>mintolerance;

其中,camerasize.w代表摄像头宽,camerasize.h代表摄像头高,screensize.h代表屏幕高,screensize.w代表屏幕宽,mintolerance代表最小分辨率差值;

s122、当所述摄像头经旋转处理成竖屏成像时,计算不同分辨率下所述摄像头的宽高比和所述屏幕的宽高比的差值;满足以下公式:

math.abs(camerasize.w/camerasize.h–screensize.w/screensize.h)>mintolerance。

具体的,在步骤s14~s15中,计算所述初始分辨率下的摄像头的成像尺寸与所述屏幕的尺寸的差值,获取所述初始分辨率下的摄像头的成像尺寸与所述屏幕的尺寸的差值小于预设的最大分辨率差值中的初始分辨率为目标分辨率。示例性的,当所述客户端处于竖屏状态时,所述摄像头的成像尺寸为所述摄像头的宽值,所述屏幕的尺寸为所述屏幕的高值;则,所述计算所述初始分辨率下的摄像头的成像尺寸与所述屏幕的尺寸的差值,具体包括:

计算所述初始分辨率下的摄像头的宽值和所述与所述屏幕的高值的差值;满足以下公式:

math.abs(camerasize.w–screensize.h)<maxtolerance;

其中,maxtolerance代表最大分辨率差值。目的是在步骤s13的结果中再过滤出摄像头宽最接近屏幕高的一套相机分辨率,作为最终过滤的相机预览分辨率previewsize。

具体的,在步骤s16中,以所述目标分辨率进行客户端的扫码识别操作。

手机竖屏下,以屏幕分辨率为基准,取摄像头宽高比与屏幕高宽比小于某个定值的预览分辨率集合,计算出与屏幕分辨率比例较均匀的相机分辨率集合;在上述前提下,取出最接近屏幕分辨率的那一套摄像头分辨率作为最终的预览分辨率。不仅解决了预览拉伸变形问题,也适配了不同机型分辨率,在不同机型分辨率下都能保证预览比例协调,预览画面清晰。

进一步的,当所述客户端处于竖屏状态且摄像头处于横屏成像状态时,所述以所述目标分辨率进行客户端的扫码识别操作前,还包括:旋转所述摄像头的成像界面,直至与所述屏幕处于同一方向。若手机屏幕为横屏显示,则不需要旋转摄像头的方向。

示例性的,步骤s11~s15的代码表示如下:

screensize//屏幕分辨率(单位:px)

camerasizes//摄像头支持的分辨率集合

mintolerance//定义摄像头与屏幕分辨率比例差值

maxtolerance//定义摄像头与屏幕分辨率宽高差值

previewsize//最终过滤的摄像头预览分辨率

for(sizecamerasize:camerasizes){

if(math.abs(camerasize.w/camerasize.h–screensize.h/screensize.w)>mintolerance);

coutinue;

if(math.abs(camerasize.w–screensize.h)<maxtolerance)

maxtolerance=math.abs(camerasize.w–screensize.h);

previewsize=camerasize;

}

returnpreviewsize;

进一步的,现有技术中还存在一个扫码区域不准的问题,严重影响扫码效率,给用户带来错觉。这本质上还是屏幕框内宽高与摄像头成像信息宽高未对应上导致的。由于摄像头分辨率与屏幕分辨率可能不一致,怎样通过精准缩放使关键成像信息与绘制扫描框完全吻合是亟需解决的问题。

参见图3,图3是本发明实施例提供的另一种客户端扫码识别方法的流程图;所述客户端扫码识别方法,包括:

s21、响应扫码操作时,确定所述屏幕上扫码框的位置信息;

s22、根据所述扫码框的位置信息确定所述摄像头在预览界面中的有效区域;

s23、根据所述有效区域进行客户端的扫码识别操作。

具体的,在步骤s21中,首先确定屏幕上扫码框的位置信息,所述位置信息包括所述扫描框的原点坐标及宽高,示例性的,通过屏幕分辨率可以获得扫码框的具体位置坐标。一般情况下屏幕正中间作为扫码框。

具体的,在步骤s22中,参见图4,图4是本发明实施例提供的选取有效区域的示意图;其中,图右一为在屏幕分辨率下产生的扫描框大小;图右二为摄像头分辨率下与屏幕分辨率下扫描框区域的重叠图,小框代表摄像头分辨率下产生的扫描框,大框代表屏幕分辨率下产生的扫描框;经过等比放大后,图右三为摄像头分辨率下产生的扫描框大小,跟屏幕分辨率下产生的扫描框大小一致。

根据扫码框在屏幕中的坐标位置计算出摄像头在预览中实际的有效区域(图右三中扫描框大小为有效区域),通过摄像头分辨率与屏幕分辨率的宽高有效比例来实现。具体实现代码如下:

camerarect.left=rect.left*camera.y/screen.x;

camerarect.right=rect.right*camera.y/screen.x;

camerarect.top=rect.top*camera.x/screen.y;

camerarect.bottom=rect.bottom*camera.x/screen.y;

其中,rect为屏幕中扫码框矩形,camerarect为实际相机中的有效区域,camera.x为摄像头宽,camera.y为摄像头高,screen.x为屏幕宽,screen.y为屏幕高。

进一步的,以实际扫码框坐标为基准,所述根据所述扫码框的位置信息确定所述摄像头在预览界面中的有效区域,具体包括:

s221、当所述摄像头的分辨率大于所述屏幕的分辨率时,对所述扫码框进行缩小操作,并根据所述扫码框的位置信息确定所述摄像头在预览界面中的有效区域;

s222、当所述摄像头的分辨率小于所述屏幕的分辨率时,对所述扫码框进行放大操作,并根据所述扫码框的位置信息确定所述摄像头在预览界面中的有效区域。

具体的,在步骤s23中,根据所述有效区域进行客户端的扫码识别操作。通过摄像头和屏幕对应的宽高比,计算出摄像头预览有效区域。扫码时,只有完全进入该区域才能被识别到,用户通过扫码框感知有效区域,能够精准适配预览画面的目标区域,解码有效区域时只裁剪压缩有效数据,减少数据处理量同时提高识别率。

本发明实施例公开的客户端扫码识别方法,不仅解决了现有技术中在进行扫码识别时的预览拉伸变形问题,适配不同机型的分辨率,在不同机型分辨率下都能保证预览比例协调,预览画面清晰,提高扫码识别率。

参见图5,图5是本发明实施例提供的一种客户端扫码识别装置10的结构示意图;所述客户端扫码识别装置10包括:

基本信息获取单元11,用于响应扫码操作时,获取摄像头的分辨率和屏幕的分辨率;

第一计算单元12,用于计算不同分辨率下所述摄像头的画面比和所述屏幕的画面比的差值;

初始分辨率获取单元13,用于获取所述摄像头的画面比和所述屏幕的画面比的差值大于预设的最小分辨率差值中的摄像头的分辨率为初始分辨率;

第二计算单元14,用于计算所述初始分辨率下的摄像头的成像尺寸与所述屏幕的尺寸的差值;

目标分辨率获取单元15,用于获取所述初始分辨率下的摄像头的成像尺寸与所述屏幕的尺寸的差值小于预设的最大分辨率差值中的初始分辨率为目标分辨率;

扫码识别单元16,以所述目标分辨率进行客户端的扫码识别操作。

优选的,所述装置还包括位置信息获取单元17和有效区域获取单元18;其中,

所述位置信息获取单元17,用于响应扫码操作时,确定所述屏幕上扫码框的位置信息;

所述有效区域获取单元18,用于根据所述扫码框的位置信息确定所述摄像头在预览界面中的有效区域;

所述扫码识别单元16,还用于根据所述有效区域进行客户端的扫码识别操作。

具体的所述客户端扫码识别装置10中各个单元的工作过程请参考上述实施例中所述客户端扫码识别方法的工作过程,在此不再赘述。

本发明实施例公开的客户端扫码识别装置10,不仅解决了现有技术中在进行扫码识别时的预览拉伸变形问题,适配不同机型的分辨率,在不同机型分辨率下都能保证预览比例协调,预览画面清晰,提高扫码识别率。

参见图6,图6是本发明实施例提供的一种客户端扫码识别设备20的结构示意图。该实施例的客户端扫码识别设备20备包括:处理器21、存储器22以及存储在所述存储器22中并可在所述处理器21上运行的计算机程序。所述处理器21执行所述计算机程序时实现上述各个户端扫码识别方法实施例中的步骤,例如图2所示的步骤s11~s16。或者,所述处理器21执行所述计算机程序时实现上述各装置实施例中各模块/单元的功能,例如基本信息获取单元11。

示例性的,所述计算机程序可以被分割成一个或多个模块/单元,所述一个或者多个模块/单元被存储在所述存储器22中,并由所述处理器21执行,以完成本发明。所述一个或多个模块/单元可以是能够完成特定功能的一系列计算机程序指令段,该指令段用于描述所述计算机程序在所述客户端扫码识别设备20备中的执行过程。例如,所述计算机程序可以被分割成基本信息获取单元11、第一计算单元12、初始分辨率获取单元13、第二计算单元14、目标分辨率获取单元15、扫码识别单元16、位置信息获取单元17和有效区域获取单元18,各模块具体功能请参考上述实施例中所述客户端扫码识别装置10中各个单元的工作过程,在此不再赘述。

所述客户端扫码识别设备20备可以是桌上型计算机、笔记本、掌上电脑及云端服务器等计算设备。所述客户端扫码识别设备20备可包括,但不仅限于,处理器21、存储器22。本领域技术人员可以理解,所述示意图仅仅是客户端扫码识别设备20备的示例,并不构成对客户端扫码识别设备20备的限定,可以包括比图示更多或更少的部件,或者组合某些部件,或者不同的部件,例如所述客户端扫码识别设备20备还可以包括输入输出设备、网络接入设备、总线等。

所述处理器21可以是中央处理单元(centralprocessingunit,cpu),还可以是其他通用处理器、数字信号处理器(digitalsignalprocessor,dsp)、专用集成电路(applicationspecificintegratedcircuit,asic)、现成可编程门阵列(field-programmablegatearray,fpga)或者其他可编程逻辑器件、分立门或者晶体管逻辑器件、分立硬件组件等。通用处理器可以是微处理器或者该处理器也可以是任何常规的处理器等,所述处理器21是所述客户端扫码识别设备20备的控制中心,利用各种接口和线路连接整个客户端扫码识别设备20备的各个部分。

所述存储器22可用于存储所述计算机程序和/或模块,所述处理器21通过运行或执行存储在所述存储器22内的计算机程序和/或模块,以及调用存储在存储器22内的数据,实现所述客户端扫码识别设备20备的各种功能。所述存储器22可主要包括存储程序区和存储数据区,其中,存储程序区可存储操作系统、至少一个功能所需的应用程序(比如声音播放功能、图像播放功能等)等;存储数据区可存储根据手机的使用所创建的数据(比如音频数据、电话本等)等。此外,所述存储器22可以包括高速随机存取存储器,还可以包括非易失性存储器,例如硬盘、内存、插接式硬盘,智能存储卡(smartmediacard,smc),安全数字(securedigital,sd)卡,闪存卡(flashcard)、至少一个磁盘存储器件、闪存器件、或其他易失性固态存储器件。

其中,所述客户端扫码识别设备20备集成的模块/单元如果以软件功能单元的形式实现并作为独立的产品销售或使用时,可以存储在一个计算机可读取存储介质中。基于这样的理解,本发明实现上述实施例方法中的全部或部分流程,也可以通过计算机程序来指令相关的硬件来完成,所述的计算机程序可存储于一计算机可读存储介质中,该计算机程序在被所述处理器21执行时,可实现上述各个方法实施例的步骤。其中,所述计算机程序包括计算机程序代码,所述计算机程序代码可以为源代码形式、对象代码形式、可执行文件或某些中间形式等。所述计算机可读介质可以包括:能够携带所述计算机程序代码的任何实体或装置、记录介质、u盘、移动硬盘、磁碟、光盘、计算机存储器、只读存储器(rom,read-onlymemory)、随机存取存储器(ram,randomaccessmemory)、电载波信号、电信信号以及软件分发介质等。需要说明的是,所述计算机可读介质包含的内容可以根据司法管辖区内立法和专利实践的要求进行适当的增减,例如在某些司法管辖区,根据立法和专利实践,计算机可读介质不包括电载波信号和电信信号。

需说明的是,以上所描述的装置实施例仅仅是示意性的,其中所述作为分离部件说明的单元可以是或者也可以不是物理上分开的,作为单元显示的部件可以是或者也可以不是物理单元,即可以位于一个地方,或者也可以分布到多个网络单元上。可以根据实际的需要选择其中的部分或者全部模块来实现本实施例方案的目的。另外,本发明提供的装置实施例附图中,模块之间的连接关系表示它们之间具有通信连接,具体可以实现为一条或多条通信总线或信号线。本领域普通技术人员在不付出创造性劳动的情况下,即可以理解并实施。

以上所述是本发明的优选实施方式,应当指出,对于本技术领域的普通技术人员来说,在不脱离本发明原理的前提下,还可以做出若干改进和润饰,这些改进和润饰也视为本发明的保护范围。

当前第1页1 2 3 
网友询问留言 已有0条留言
  • 还没有人留言评论。精彩留言会获得点赞!
1