大兵文字识别教程
此识别程序适用于大兵插件5.06.版本
1、文字识别原理
字符串是什么颜大兵插件文字识别为点阵识别,所谓点阵说的白一点就是“点”,我们显示器的显示分别率假设为1024×768,那么用点阵来解释就是1024×768个点(横向1024,纵向768),每个点也就是每个像素是显示的最小单位,9ppt 宋体汉字大小为11×11,就是由11×11个点阵来显示汉字,DOS时代的文字都是点阵格式,现在的文字大部分是矢量型式,但是反映到显示器上,放大了看还是点阵的方式,所以识别来说点阵是最简单的方式
“大”的点阵放大了,黑是大的文字部分。
2、大兵识别函数:
大兵文字识别的函数为O CR,参数为15个,分别为:
1、窗口句柄(数字≥0,0表示当前屏幕,采用屏幕坐标系统,其余采用窗口坐标系统(后台方式,不能用于DirectX窗口)
2、识别范围左上角X(数字≥0)
3、识别范围左上角Y(数字≥0)
4、识别范围右下角X(数字≥0)
5、识别范围右下角Y(数字≥0)
6、识别字体类型(数字0、1),可选参数,默认为0
0表示常规字体
1表示粗体
7、识别类型(数字0~1),可选参数,默认为0
0表示识别汉字混排
1表示识别单纯数字
8、字库名称(字符串),必须为Dll型字库文件,扩展名可省略,必须与插件统一目录,可选参数,默认为"Songti_11.Dll"
9、文字横向净距(文字间隔)(数字≥0),可选参数,默认为1
10、文字纵向净距(文字间隔)(数字≥0),可选参数,默认为1
11、识别颜(字符串,如"000000",16进制颜代码),可选参数,默认为"000000",此参数可带入多个颜值,例如"00FFFF,FFFFFF,00FF00",可同时识别多种颜文字
12、颜情况,可选参数,默认为0(数字0~1,0表示文字颜,1表示背景)
13、颜偏差,可选参数,默认为0,此参数可以使用数字和字符串,例如0,"0","0,0,0"将代表同一个意思。
使用字符串,例如"10,20,30"来分别设置R G B偏差(只能设置3个偏差,顺序为R、G、B),那么RGB偏差分别为R=10,G=20,B=30,如果只输入一个,那么将默认为RGB偏差都为此数,例如"10",RGB偏差分别为R=10,G=10,B=10,如果大于1个,那么将分别设置RGB偏差,缺少的将默认为0,例如"10,10",RGB 偏差分别为R=10,G=10,B=0,大于三个将取前三个。
RGB偏差有效范围为0-255,大于255等同255,小于0等同0,数字越大,识别匹配越广(建议不要设置超过254)
14、设定识别字符串,可选参数,默认为0(此参数为空字符串""、0或者不填,那么将识别设定范围内的所有文字,如果为其他字符(例如“大”)将返回设定范围内第一个设定文字的左上角坐标,返回一维数组,依次表示x,y,失败返回-1,-1)
15、多行识别时每行文字之间隔断字符(字符串),可选参数,默认为
空,例如文本有三行,分别为123、456和798,默认识别结果为"123456789",如果此参数设置为",",结果为"123,456,789"
参数1:这个参数为什么需要,原因是这个函数可以后台识别,但是这个后台只能用于W INDOW S的非DirectX窗口(Direct X窗口就是一般的游戏窗口,播放器窗口,这类窗口有D irect X直接驱动生成,非一般生成原理,生成的图像信息一般保存在显存里面,这也是现在大部分后台颜图像软件不能识别的原因),参数设为0表示前台窗口,就是当前屏幕,如果大于0,那么就进行后台识别,这个时候如果给定的这个句柄说代表的窗口不存在,意思就是这个句柄为非法的,那么也不能进行识别。如果用于后台识别,下面的参数2-4将使用窗口坐标系统。
窗口坐标系统与屏幕坐标系统的区别:一个坐标系统都是以这个系统的左上角为坐标0,0,屏幕是以显示器的左上角为0,0,窗口是以窗口的左上角为坐标0,0,窗口和屏幕这两个系统的差就是这个窗口的左上角坐标,采用窗口坐标系统有的人不会,一种方法就是用函数转化,另外一种就是把预转化的窗口
移动到屏幕的0,0,得到的屏幕坐标就是窗口坐标了。用我的窗口信息软件可以得到这两个坐标系统
当前窗口的窗口坐标,注意句柄是否是你寻的句柄
父窗口的窗口坐标,注意句柄是否是你寻
的句柄
顶级窗口的窗口坐标,注意句柄是否是你寻的句柄
屏幕坐标
如果设置鼠标偏差,可到设置偏差
大兵插件内的Coordinate FtoB函数提供了丰富的坐标转系
参数2-5:
这参数2、3与参数4、5所围成的区域是文字识别的区域,参数2、3为起点,4、5为终点
如图所示,X0、Y0分别是参数2和参数3,X1、Y1分别为参数4和5,其中最难确定的就是X0和Y0。其实要确定这样两个参数也不是很难,首先确定一个比较大一点的范围,直到能识别全部的文字,然后用参数13,把参数13设为识别文字里面的第一个字,那么返回的结果就是第一个字的左上角坐标,这个时候把这个坐标代替刚才范围的X0、y0即可,为了提高识别的成功率,这个时候的X0和y0都可一适当变小,不过建议使用准确的坐标或者适当减少X0的数字,Y0尽量使用准确,这样可以提高识别的速度。
参数6:这个是识别的时候的最难的地方,因为要识别文字,需要知道这个文字的字体和大小才能确定使用的字库,大家都知道,中文只很多,常用的有6000多个,这样的数目在做成字库的时候将很大,如果把好几种字库综合一起,那么字库将更大,再说了,因为使用的人的不同,对字体的要求也不一样,不可能满足所有的人的要求,因此现在的字库只提供了常用的几种,每种字体的每个大小提供一个字库。
要确定是暗中字体,目前只有一个方法,那就是比较,使用大兵提供的汉字测试系统和窗口信息系统来进行比较。例如下面的“大”字,首先用窗口信息软件放大
的到大的放大的点阵图样
然后在大兵插件字库提取程序中提取宋体的“大”的点阵
也可以双击来放大点阵查看详细情况
然后进行比较,这个时候如果点阵不一样,那么你可以处改变字体,直到寻到合适的字体。
参数7、这个不用多说了,单独提供数字是为了方便数字识别,用混合识别也可以识别数字,但是识别的起点X0、Y0不同
参数8、这个怎么确定也没有好的办法,只能像判断字体一样,用窗口信息软件放大了去数了。
参数9、10:这个参数为可选参数,一般的文字间隔都为1,不过有的比较大,如果这两个参数设置准确,对提高识别率和识别速度都是有帮助的。
参数11:文字颜或者背景颜,主要是根据参数13来确定,有的时候文字颜比较多,不容易识别,但是背景颜比较单一,这个时候就可以用识别
背景的方式来识别文字,例如,文字有三种颜,如果想同时识别,除了设定参数9为"00FFFF,FFFFFF,00FF00"(参数12此时为0,识别文字颜,参数13设为20)来识别外还可以设为为"000000"(参数12此时为1,识别背景颜,参数13设为140)来识别。
参数12:这个参数在参数11中已经介绍了
参数13:这个参数主要是针对识别的文字的颜不纯,有颜偏差,适当设置这个参数可以提高识别率,不过建议这个参数最大不要超过150,太大了也能降低识别
参数14:这个参数在参数11中已经介绍了
参数15:这个参数作用是为了区分识别结果的,例如
,如果识别结果为“黑铁矿石重量4纯度6
版权声明:本站内容均来自互联网,仅供演示用,请勿用于商业和其他非法用途。如果侵犯了您的权益请与我们联系QQ:729038198,我们将在24小时内删除。
发表评论