基于OCR的电子白板智能手绘图形方法、装置及设备与流程

文档序号:30305162发布日期:2022-06-05 04:48阅读:99来源:国知局
基于ocr的电子白板智能手绘图形方法、装置及设备
技术领域
1.本发明属于电子白板技术领域,尤其涉及一种基于ocr的电子白板智能手绘图形方法、装置及设备。


背景技术:

2.opencv是指一个基于bsd许可(开源)发行的跨平台计算机视觉和机器学习软件库;ocr是指光学字符识别;rectf是指android原生常用的一个“绘画相关的工具类”,常用于描述长方形/正方形,实现一个“长方形”的概念,该类支持更高精度的数值;motionevent是指android原生屏幕触摸事件的一个类,可记录事件的类型(包括action_down按下、action_move移动、action_up抬起等)以及触摸xy轴坐标位置等。
3.当前电子白板主要有两种图形绘制方案,其中一种是选择特定形状的图形模式,直接将规则的特定形状绘制到指定位置;还有一种是白板集成opencv的方式对手绘笔迹进行识别,识别为特定形状后再进行矫正绘制。
4.选择特定形状的图形模式的方案:需要在电子白板中切换到特定形状的图形模式,并选择绘制位置。当用户想在书写模式过程中需要绘制三角形时,需要切换模式,用户体验不够流畅,有一定的使用局限性。
5.选择集成opencv的方案:需要开发人员对opencv有一定的掌握,并且实现起来比较复杂,门槛较高。


技术实现要素:

6.本发明的目的在于提供一种基于ocr的电子白板智能手绘图形方法、装置及设备,通过借助ocr文字识别对手绘笔迹进行矩形图形识别,再通过矫正算法绘制实现智能手绘矩形的方案,实现门槛较低,并能带给用户智能化操作感,提升用户体验。
7.为实现上述目的,一方面,本发明提供了一种基于ocr的电子白板智能手绘图形方法,包括以下步骤:s1手绘笔迹识别:开始手绘时,屏幕接收到action_down触摸事件后,开始记录所述触摸事件的x轴、y轴坐标数据,在action_up事件抬手后一定时间内,如果没有后续action_down触摸事件传入,则表示所述手绘完成,停止记录,并将记录的坐标数据传给ocr文字识别的sdk,得到所述手绘返回的文字结果;
8.s2测试总结:返回的文字结果若为与特定图形相似的文字符号模型,则能判断用户手绘的是所述特定图形;
9.s3:进行特定图形矫正绘制。
10.作为进一步技术改进,所述文字结果若为与三角形相似的文字符号模型,所述文字符号模型包括

、a,则能判断用户手绘的是三角形,所述三角形的矫正绘制包括以下步骤:
11.s3.11根据输入笔迹四个方向最大顶点坐标获得绘制出矩形对象;
12.s3.12计算三角形顶点坐标;
13.s3.13交叉连接三个顶点,画三条直线,绘制出三角形。
14.作为进一步技术改进,所述文字结果若为与矩形相似的文字符号模型,所述文字符号模型包括口、

、曰、日,则能判断用户手绘的是矩形;所述矩形的矫正绘制包括以下步骤:
15.s3.21根据输入笔迹四个方向最大顶点坐标获得绘制出矩形对象,即最大程度接近手绘大小的矩形;
16.s3.22根据矩形左上角顶点和右下角顶点的xy坐标,绘制出矩形。
17.作为进一步技术改进,所述文字结果若为与圆形相似的文字符号模型,所述文字符号模型包括

、。、o、0、o,则能判断用户手绘的是圆形;所述圆形的矫正绘制包括以下步骤:
18.s3.31根据输入笔迹四个方向最大顶点坐标获得绘制出矩形对象;
19.s3.32计算圆心以及半径;
20.s3.33根据圆心以及半径,绘制出圆形。
21.作为进一步技术改进,所述文字结果若为与五角星图形相似的文字符号模型,所述文字符号模型包括



,则能判断用户手绘的是五角星;所述五角星的矫正绘制包括以下步骤:
22.s3.41计算五角星显示圆形的圆心以及半径;
23.s3.42计算五角星五个顶点坐标位置;
24.s3.43交叉连接五个顶点,画出五条直线,从而绘制出五角星。
25.作为进一步技术改进,所述文字结果若为与箭头相似的文字符号模型,所述文字符号模型包括







,则能判断用户手绘的是箭头,所述箭头的矫正绘制包括以下步骤:
26.s3.51根据输入笔迹四个方向最大顶点坐标获得绘制出矩形对象;
27.s3.52判断箭头的方向;
28.s3.53计算箭头顶点坐标;
29.s3.54根据四个顶点坐标,画三条直线,绘制出箭头。
30.作为进一步技术改进,s3.32中所述计算圆心以及半径,设圆形的圆心为显示矩形的中心点,所述半径取所述显示矩形的中宽高中长度的一半,最大程度接近手绘圆形的大小。
31.作为进一步技术改进,所述五角星显示圆形的圆心以及半径,根据输入笔迹的四个方向最大顶点坐标获得所述绘制出矩形对象,矩形的中心点即为五角星显示圆形的圆心
32.另一方面本发明还提供了一种基于ocr的电子白板智能手绘图形的系统,包括:用于手绘笔迹识别的装置、用于测试总结的装置以及用于图形矫正绘制的装置;所述手绘笔迹识别的装置用于记录触摸事件的坐标数据,并将记录的坐标数据传给ocr文字识别的sdk,得到所述手绘返回的文字结果;
33.所述测试总结的装置用于将返回的文字结果与特定图形相似的文字符号模型进行比对判断,判断得出用户这次手绘的特定图形;所述形矫正绘制的装置用于根据判断得出用户这次手绘的特定图形,进行矫正绘制。
34.同时本发明还提供了一种计算机设备,包括存储器、处理器及存储在存储器上并
在处理器上运行的计算机程序,所述处理器执行所述计算机程序时实现基于ocr的电子白板智能手绘图形方法。
35.与现有技术相比,本发明具有以下有益的技术效果:
36.本发明通过借助ocr文字识别对手绘笔迹进行图形识别,再通过矫正算法绘制实现智能手绘图形的方案,实现门槛较低,并能带给用户智能化操作感,提升用户体验。
附图说明
37.为了更清楚地说明本发明实施例,下面将对实施例所需要的附图作简要介绍,显而易见,下面描述中的附图仅为本发明的一些实施例,对于本领域普通技术人员来讲,在不付出创造性劳动的前提前,可以依据此附图得到其他的附图。
38.图1为实施例2的图形矫正示意图。
39.图2为实施例3的图形矫正示意图。
40.图3为实施例4图形矫正示意图。
41.图4为实施例5图形矫正示意图。
42.图5为实施例5图形矫正示意图。
43.图6为实施例6图形矫正示意图。
具体实施方式
44.下面结合附图对本公开实施例进行详细描述。
45.以下通过特定的具体实例说明本公开的实施方式,本领域技术人员可由本说明书所揭露的内容轻易地了解本公开的其他优点与功效。显然,所描述的实施例仅仅是本公开一部分实施例,而不是全部的实施例。本公开还可以通过另外不同的具体实施方式加以实施或应用,本说明书中的各项细节也可以基于不同观点与应用,在没有背离本公开的精神下进行各种修饰或改变。需说明的是,在不冲突的情况下,以下实施例及实施例中的特征可以相互组合。基于本公开中的实施例,本领域普通技术人员在没有作出创造性劳动前提下所获得的所有其他实施例,都属于本公开保护的范围。
46.实施例1
47.本实施例提供了一种基于ocr的电子白板智能手绘图形方法,包括以下步骤:s1手绘笔迹识别:开始手绘时,屏幕接收到action_down触摸事件后,开始记录所述触摸事件的x轴、y轴坐标数据,在action_up事件抬手后一定时间内,如果没有后续action_down触摸事件传入,则表示所述手绘完成,停止记录,并将记录的坐标数据传给ocr文字识别的sdk,得到所述手绘返回的文字结果;
48.s2测试总结:返回的文字结果若为与特定图形相似的文字符号模型,则能判断用户手绘的是所述特定图形;
49.s3:进行特定图形矫正绘制。
50.一方面,本实施例提供了基于ocr的电子白板智能手绘图形的系统,包括:用于手绘笔迹识别的装置、用于测试总结的装置以及用于图形矫正绘制的装置;
51.所述手绘笔迹识别的装置用于记录触摸事件的坐标数据,并将记录的坐标数据传给ocr文字识别的sdk,得到所述手绘返回的文字结果;
52.所述测试总结的装置用于将返回的文字结果与特定图形相似的文字符号模型进行比对判断,判断得出用户这次手绘的特定图形;所述形矫正绘制的装置用于根据判断得出用户这次手绘的特定图形,进行矫正绘制。
53.另一方面,本实施例还提供了计算机设备,包括存储器、处理器及存储在存储器上并在处理器上运行的计算机程序,所述处理器执行所述计算机程序时实现基于ocr的电子白板智能手绘图形方法。
54.实施例2
55.如附图1所示,本实施例提供了一种基于ocr的电子白板智能手绘图形方法,包括以下步骤:手绘笔迹识别,开始手绘时,屏幕接收到action_down触摸事件后,开始记录该次触摸事件的x轴、y轴坐标数据,在action_up事件抬手后一定时间内,如果没有后续action_down触摸事件传入,则表示所述手绘完成,停止记录,并将记录的坐标数据传给ocr文字识别的sdk,得到所述手绘返回的文字结果;经过多次测试总结,返回的文字结果若为
“▲”
,“a”等与三角形相似的文字符号模型,则能判断用户手绘的是三角形;
56.所述三角形的矫正绘制:根据输入笔迹四个方向最大顶点坐标可获得绘制出矩形对象(rectf)。
57.计算三角形顶点坐标:本实施例以实现等腰三角形为例,故上顶点坐标是显示矩形上边线的中点,左右顶点的坐标则为显示矩形的左下顶点和右下顶点坐标,具体实现为:
58.float topx=rectf.centerx();
59.float topy=rectf.top;
60.float leftx=rectf.left;
61.float lefty=rectf.bottom;
62.float rightx=rectf.right;
63.float righty=rectf.bottom;
64.交叉连接三个顶点,画三条直线,绘制出三角形,具体实现:
65.canvas.drawline(topx,topy,leftx,lefty,paint);
66.canvas.drawline(leftx,lefty,rightx,righty,paint);
67.canvas.drawline(rightx,righty,topx,topy,paint)。
68.实施例3
69.如附图2所示,本实施例提供了一种基于ocr的电子白板智能手绘图形方法,包括以下步骤:开始手绘时,屏幕接收到action_down触摸事件后,开始记录该次触摸事件的x轴、y轴坐标数据,在action_up事件抬手后一定时间内,如果没有后续action_down触摸事件传入,则表示所述手绘完成,停止记录,并将记录的坐标数据传给ocr文字识别的sdk,得到所述手绘返回的文字结果;
70.经过多次测试总结,返回的文字结果若为“口”,
“■”
,“曰”,“日”等与矩形相似的文字符号模型,则能判断用户手绘的是矩形;
71.根据输入笔迹四个方向最大顶点坐标可获得绘制出矩形对象(rectf),即最大程度接近手绘大小的矩形;
72.根据矩形左上角顶点和右下角顶点的xy坐标,绘制出矩形,具体实现为:
73.float rectstartx=rectf.left;
74.float rectstarty=rectf.top;
75.float rectendx=rectf.right;
76.float rectendy=rectf.bottom;
77.canvas.drawrect(rectstartx,rectstarty,rectendx,rectendy,paint);
78.实施例4
79.如附图3所示,本实施例提供了一种基于ocr的电子白板智能手绘图形方法,包括以下步骤:手绘笔迹识别,开始手绘时,屏幕接收到action_down触摸事件后,开始记录该次触摸事件的x轴、y轴坐标数据,在action_up事件抬手后一定时间内,如果没有后续action_down触摸事件传入,则表示所述手绘完成,停止记录,并将记录的坐标数据传给ocr文字识别的sdk,得到所述手绘返回的文字结果。
80.经过多次测试总结,返回的文字结果若为
“●”
,“o”,“o”,“0”,“。”等与圆形相似的文字符号模型,则能判断用户手绘的是圆形;所述圆形矫正绘制包括以下步骤:根据输入笔迹四个方向最大顶点坐标可获得绘制出矩形对象(rectf)。
81.计算圆心以及半径,圆心为显示矩形的中心点,即为:
82.float centerx=rectf.centerx();
83.float centery=rectf.centery();
84.半径取显示矩形中宽高中长度的一半,可以最大程度接近手绘圆形的大小,具体实现为:
85.float radius=math.max(rectf.width(),rectf.height())/2;
86.根据圆心以及半径,绘制出圆形:
87.canvas.drawcircle(centerx,centery,radius,paint)。
88.实施例5
89.如附图4和附图5所示,本实施例提供了一种基于ocr的电子白板智能手绘图形方法,包括以下步骤:手绘笔迹识别,开始手绘时,屏幕接收到action_down触摸事件后,开始记录该次触摸事件的x轴、y轴坐标数据,在action_up事件抬手后一定时间内,如果没有后续action_down触摸事件传入,则表示所述手绘完成,停止记录,并将记录的坐标数据传给ocr文字识别的sdk,得到所述手绘返回的文字结果;
90.经过多次测试总结,返回的文字结果若为
“★”
或者
“☆”
文字符号模型,则能判断用户这次手绘的是五角星。
91.五角星矫正绘制:计算五角星显示圆形的圆心以及半径,根据输入笔迹四个方向最大顶点坐标可获得绘制出矩形对象(rectf),矩形的中心点即为显示圆形的圆心,圆心xy轴坐标位置为:
92.int centerx=rectf.centerx();
93.int centery=rectf.centery();
94.半径r取宽高中长度的一半,可以最大程度接近手绘五角星大小,具体实现为:float r=math.max(rectf.width(),rectf.height())/2;
95.计算五角星五个顶点坐标位置:根据五角星五个顶点分布规律,得出单位圆心角弧度为:double ch=72*math.pi/180;
96.如附图5所示,已知圆心坐标位置以及半径,根据三角函数,可得出五个顶点x轴坐
标分别为:
97.int x0=(int)centerx;
98.int x1=(int)(centerx+math.sin(ch)*r);
99.int x2=(int)(centerx+math.sin(ch/2)*r);
100.int x3=(int)(centerx-math.sin(ch/2)*r);
101.int x4=(int)(centerx-math.sin(ch)*r);
102.y轴坐标分别为:
103.int y0=(int)(centery-r);
104.int y1=(int)(centery-math.cos(ch)*r);
105.int y2=(int)(centery+math.cos(ch/2)*r);
106.int y3=y2;
107.int y4=y1;
108.交叉连接五个顶点,画出五条直线,从而绘制出五角星:
109.canvas.drawline(x0,y0,x2,y2,paint);
110.canvas.drawline(x2,y2,x4,y4,paint);
111.canvas.drawline(x4,y4,x1,y1,paint);
112.canvas.drawline(x1,y1,x3,y3,paint);
113.canvas.drawline(x3,y3,x0,y0,paint)。
114.实施例6
115.如附图6所示,本实施例提供了一种基于ocr的电子白板智能手绘图形方法,包括以下步骤:开始手绘时,屏幕接收到action_down触摸事件后,开始记录该次触摸事件的x轴、y轴坐标数据,在action_up事件抬手后一定时间内,如果没有后续action_down触摸事件传入,则表示所述手绘完成,停止记录,并将记录的坐标数据传给ocr文字识别的sdk,得到所述手绘返回的文字结果;
116.经过多次测试总结,返回的文字结果若为
“↑”
,
“↓”
,
“←”
,
“→”
等与箭头相似的文字符号模型,则能判断用户手绘的是箭头,所述箭头进行矫正绘制,包括以下步骤:如附图6所示,以从左向右的箭头为例,根据输入笔迹四个方向最大顶点坐标可获得绘制出矩形对象(rectf)。
117.判断箭头的方向:
118.本实施例以实现上下左右四个方向的垂直箭头为例,故根据返回文字结果即可确定箭头的方向,具体判断逻辑为:
119.文字结果为
“↑”
,则箭头图形方向向上;
120.文字结果为
“↓”
,则箭头图形方向向下;
121.文字结果为
“←”
,则箭头图形方向向左;
122.文字结果为
“→”
,则箭头图形方向向右;
123.计算箭头顶点坐标:
124.以从左向右的箭头为例,通过显示矩形可得出箭头中的左右顶点坐标为:
125.float leftx=rectf.left;
126.float lefty=rectf.centery();
127.float rightx=rectf.right;
128.float righty=rectf.centery();
129.自定义上下两条箭头边线长度为len,同时已知规则箭头夹角为45度,根据三角函数可得到箭头上下顶点坐标为:
130.float topx=rightx-math.cos(45/2)*len;
131.float topy=righty-math.sin(45/2)*len;
132.float bottomx=topx;
133.float bottomy=righty+math.sin(45/2)*len;
134.根据四个顶点坐标,画三条直线,绘制出箭头
135.绘制主直线:
136.canvas.drawline(leftx,lefty,rightx,righty,paint);
137.绘制箭头边线:
138.path.moveto(rightx,righty);
139.path.lineto(topx,topy);
140.path.moveto(rightx,righty);
141.path.lineto(bottomx,bottomy);
142.canvas.drawpath(path,paint)。
143.所属领域的技术人员可以清楚地了解到,为描述的方便和简洁,上述描述的系统,装置和单元的具体工作过程,可以参考前述方法实施例中的对应过程,在此不再赘述。
当前第1页1 2 
网友询问留言 已有0条留言
  • 还没有人留言评论。精彩留言会获得点赞!
1