本帖最后由 兄弟工程师05 于 2014-6-11 15:09 编辑
本期主题:介绍目前手机按键(按键精灵安卓版)在编写脚本中,都需要用到哪些方式进行图色识别。
惯例先讲好处:
1、找色,如何计算颜色相似度,解决不同款式手机中画面颜色差异的问题。
2、找图,不太推荐,我们来聊聊多点找色,解决找图缓慢不效率,判断不准确的问题。
科普小技巧:关于多点取色如何获取点阵特征(注意手机按键使用,多点找色取点不宜超过10个),请查看以下帖子
正题一:找色,先介绍下手机按键自带的找色命令。
固定坐标获取单点颜色
注解:获取坐标X与Y位置的颜色值信息,返回存入变量col中。
Dim col,x,y
col=GetPixelColor(x,y)
TracePrint "颜色=" & col复制代码区域范围查找单点颜色
注解:变量intX, intY需要预先定义。如果您还没有定义该变量,请取消下面一行的注释。
如果没有找到,intX和intY的值都会被置为-1,那么这里我们只需要判断一个值就可以确认是否找到。
Dim intX, intY
FindColor 0, 0, 720, 1280, "0000FF", 0, 0.9, intX, intY
//如果没有找到,intX和intY的值都会被置为-1,那么这里我们只需要判断一个值就可以确认是否找到。
If intX > 0 Then
//如果intX大于0,说明找颜色,IntX与IntY分别表示这颜色的位置坐标
TracePrint "找到颜色,坐标=" & intX & "," & intY
Else
//否则
TracePrint "没找到颜色"
End If复制代码要点讲解:如何判断两个颜色相似度,以便解决单点颜色判断上的误差问题,以下提供两个写好的函数模块给大家学习。函数名称:IsCol
函数功能:通过计算16进制颜色值中的RGB平均差值,得出两个颜色值相似度是否到达对应百分比
函数参数:
参数1:字符串型,16进制颜色值
参数2:字符串型,16进制颜色值
参数3:整数型,相似度
返回值:True 或 False(符合或不符合)
函数范例:
'判断两个16进制值相似度是否到达对应百分比
Function IsCol(col1,col2,n)
IsCol=False
Dim r1,g1,b1
Dim r2,g2,b2
ColorToRGB col1,r1,g1,b1
ColorToRGB col2,r2,g2,b2
If 1 - (Abs(r1 - r2) + Abs(g1 - g2) + Abs(b1 - b2)) / 255 / 3 >= n Then IsCol=True
End Function复制代码函数名称:CmpCol
函数功能:获取固定坐标点16进制颜色值,传入IsCol函数进行相似度对比,得出两个颜色值相似度是否到达对应百分比
函数参数:
参数1:整数型,屏幕X坐标
参数2:整数型,屏幕Y坐标
参数3:字符串型,16进制颜色值
返回值:True 或 False(符合或不符合)
'固定坐标单点模糊找色
Function CmpCol(x,y,col,n)
CmpCol=False
If x < 0 or y < 0 Then Exit Function
Dim temp_col
temp_col=GetPixelColor(x,y)
If temp_col=col Then
CmpCol=True
Else
CmpCol=IsCol(col,temp_col,n)
End If
End Function复制代码1.5.1新增命令介绍
函数名称:CmpColor
函数功能:比较指定坐标点(x,y)的颜色,支持多色、偏色、相似度比较
函数参数: