大家好,我是郭立员,今天来讲一下多点找色的原理。
一、像素的概念
我们看到图片其实是由一个个颜色点组成,这些颜色点称之为像素,由于像素的面积非常小,我们基本上看不见单个像素,不过如果用软件放大观看,会发现像素就是小方块,一张图由大量的小方块组成。
二、按键中的颜色值
颜色值是6位十六进制的字符,如:74AF1F,六位分成3组,分步是蓝色分量、绿色分量、红色分量,每一个分量最小值是00,最大值是FF,如果把这个十六进制换成十进制,最小值是0,最大值是255。从最小值到最大值一共是256个值,代表的是颜色的色阶有256个等级。
一个颜色值是由这3个分量组成,这个组成方式就像是在一个黑暗的房间里有3个手电筒,分别发出红绿蓝三个颜色的光,使用它们照在一个黑色板子上的同一个点。由于受到不同颜色的光照射,会看到不同的颜色。
因为每一个颜色分量有256个色阶,当三个颜色分量以不同色阶组合就会得到大约一千六百多万种颜色值,这也就是我们可以在屏幕上看到非常丰富颜色的原因。
三、多点找色命令的介绍
多点找色命令: FindMultiColor
FindMultiColor x1,y1,x2,y2,first_color,offset_color,dir,sim,intX,intY
x1:整数型,查找区域左上X坐标
y1:整数型,查找区域左上Y坐标
x2:整数型,查找区域右下X坐标
y2:整数型,查找区域右下Y坐标
first_color:要对比的16进制颜色,多个颜色用"|"号分隔,
如果需要对比偏色则中间用“-”号分隔,比如"FFFFFF|123456-000000|00FF00-101010"
sim:双精度浮点数,相似度,取值范围0-1
offset_color:字符串,偏移颜色
dir:整数型,查找方向.
0:表示从左上向右下查找;
1:表示从中心往四周查找;
2:表示从右下向左上查找;
3:表示从左下向右上查找;
4:表示从右上向左下查找;
intX:变参指针,返回找到的X坐标
intY:变参指针,返回找到的Y坐标
核心的参数:
基础色 first_color
偏移颜色 offset_color
四、多点找色原理
①在找色范围内查找基础色
按照一定顺序默认是从范围的左上到右下,逐个像素点查找基础色的颜色值。
②比对偏移颜色
通常在查找基础色时会找到多个符合要求的像素点,需要通过比对偏移颜色来进行判断是否是我们要找的位置坐标。
那什么是偏移颜色?
上图中距离基础色 向右移动2个像素,向下移动3个像素的点的颜色是橙色,这个橙色就是偏移颜色。
代码写法:
2|3|1F8AF9
偏色颜色由三部分组成,上面代码用竖线分隔开,分别代表横向偏移,纵向偏移,颜色值。
偏移的正负值觉得方向:正值 横向向右,纵向向下,负值横向向左,纵向向上。
如果是多组偏色颜色用逗号分隔。
多点找色就是先找到基础色,然后比对偏移颜色指向的像素点颜色值和我们写的偏移颜色是不是相同(相似),当然偏移颜色是可以有很多个,数量越多,对准确性的严格程度越高。
多点找色的核心就是设定一个包含多个固定距离的像素点颜色值的数据,然后在范围内比对满足此数据颜色分布的点。