按键精灵找图找到后跳出循环 按键精灵如何设置循环

大家好,我是微信官方账号3分钟学堂的郭莉媛 。今天给大家带来一篇基础知识的文章,主要讲找图、找色、找词的联系和区别 。这是一个基本原理的教程,可能有点枯燥 。
由于篇幅较长,将分两期更新 。本期主要讲找图原理和偏色原理 。
图形色彩原理这些命令,如查找图片、查找颜色、比较颜色、查找单词,可以统称为图片颜色命令 。所有的图片颜色命令都有一个共同的特点,就是处理图像像素的颜色值和位置 。
图像的像素是多少?当我们放大图像时,会发现图像是由色块组成的 。因为这些色块很小,不放大看不出有明显的块边界 。这些带颜色的小方块就是图像的像素 。
像素通常是近似正方形的,这里我用的是近似,这是由显示屏的硬件决定的 。
像素排列在分为水平和垂直方向的二维平面上 。大量像素排列在一起形成图像 。
地图搜索命令的原理以上图为例 。先拍一张4*4的图,开始找图 。
在这里,我把4*4图片的每个像素都标上了序号,总共有16个序号 。
先说说找图的过程 。我就以左上右下找图为例 。
①从马里奥图片左上角的第一个像素开始,寻找序号为1的像素的颜色值,如下图所示比较每个像素 。
②假设找到了与1号颜色相同的像素,记录下这个点的位置 。
③开始将上一步中找到的点的下一个像素的颜色与序列号2的颜色进行比较 。如果是,将序号3的颜色与下一个像素的颜色进行比较,以此类推,直到序号16的颜色 。颜色也是按照4*4的位置比较,即序号1-4是第一排,序号5-8是第二排...
④比较No的颜色有两种可能 。上一步中的2-16:
一个一模一样 。如果一模一样,就说明我们成功找到了地图 。地图查找命令返回到步骤②中记录的位置,也就是我们常用的intx,inty 。
第二,比较显示某个序列号颜色值不一样,说明比较失败 。从步骤②位置的下一个像素开始继续搜索序号为1的像素的颜色,重复上述操作,如此反复 。
⑤循环比较待映射区域的所有颜色 。如果没有成功比较所有颜色,映射命令将找不到映射 。为了方便脚本判断,将-1赋给intx和inty 。
这些步骤就是找图的原理 。
所以想想什么因素会影响找地图的速度?
①获取像素颜色值的速度,这也是为什么使用“截图到内存命令”会提高查找图片的速度 。
②计算数据的速度,即比较两个像素的颜色值是否相同需要时间 。
③你要找的图片越高,找到的时间越少 。
④数字1一个像素在整个找图区域出现的次数 。次数越多,比较的时间可能就越长 。这里使用“可能”这个词是因为如果在第一次或前一次出现之后找到地图,就没有必要继续比较下面的内容 。
⑤你要找的图片尺寸越小,速度就越快 。比如本文中的例子是一张4*4的图片,那么你只需要对比16种颜色 。如果是50*50,你要对比2500个点 。当然,对于现在的计算机来说,16和2500的计算时间差别很小,但是如果以周期为单位搜索图形,比如10000个周期,160000个周期,2500万个周期,那么计算时间就会有明显的差别 。
来说说截图吧 。是不是越小的图越少?不会,如果只有一个像素,会有很多重复,会导致找错位置 。我们截图基于一个原则:图片越小越好 。
色偏和相似性在使用地图查找命令时,还有两个参数是上面的地图查找原理中没有提到的,即色偏和相似度 。
它们是用来做什么的?
偏色和相似度的作用是一样的,都是为了增加找图的容错率(容错率),也就是把与要找的地图非常接近的颜色也作为有效颜色,这样当找图区域的颜色稍有变化时,我们也可以通过找图命令找到想要的位置坐标 。
让我们从色偏开始:
【按键精灵找图找到后跳出循环 按键精灵如何设置循环】(1)色偏
在映射代码中,该参数默认为000000,即无偏色 。这六个数字代表什么?
它们分为三组,每组代表一种颜色 。
这里需要强调的是,颜色顺序是蓝绿红 。如果你对颜色有基本的了解,你想说颜色值的顺序不是红绿蓝吗?是的,在大多数与颜色相关的软件或程序中是红绿蓝RGB,但按键不是,不知道写按键的作者是怎么想的 。记住这个顺序就好 。
我们以上面马里奥搜索图片为例:
序号1的像素点
颜色值为:d6330a,根据上述颜色值分组:
蓝色价值:d6
绿色值:33
红色值:0a
为什么这个值里有字母?因为颜色值是十六进制,不是我们日常的十进制 。
十进制:0123456789,每10位数一位 。
十六进制:0123456789ABCDEF每16位输入一位,其中A等于10,B等于11,C等于12,D等于13,E等于14,F等于15 。
我不说十六进制到十进制的转换 。
我们以蓝-绿-红每种颜色的最小偏色值为例来了解偏色 。
每个色偏的最小值是01,所以色偏值是010101 。假设我们把这个010101的cast加到查找图片的命令里,会有什么影响?
原来我们要找的序列号1的色值是d6330a 。如果加入色偏010101,符合要求的色值将由原来的色偏变为27 。
计算所需颜色值的公式是d6330a010101 。
按颜色拆分:
蓝色:d601 。范围是d5~d7 。
绿色:3301获得范围32~34 。
红色:0a01 。范围是09~0b 。
从这些颜色范围中获得的27种颜色是什么?
d53209 d5320a d5320b
d53309 d5330a d5330b
d53409 d5340a d5340b
d63209 d6320a d6320b
d63309 d6330a d6330b
d63409 d6340a d6340b
d73209 d7320a d7320b
d73309 d7330a d7330b
d73409 d7340a d7340b
红色是没有偏色的颜色,其他都是偏色的 。其实偏色可以理解为色偏 。
本来是一个色值d6330a,但是色偏值增加了01,变成了27色 。然后在比较地图查找命令中1号的颜色值时,不是一种颜色,而是27种颜色 。因此,满足要求的颜色有27种可能性,因此地图查找的容许率(容许差异)很高 。
当我们增加色偏值时,这个贴图的颜色范围会继续扩大 。
扩展色域的计算公式:
(2*蓝色色偏1)*(2*绿色色偏1)*(2*红色色偏1)
我们刚刚计算了每种颜色的最小色偏01,如下所示:
(2*01 1)*(2*01 1)*(2*01 1)=3*3*3=27
这里有一些特殊情况 。颜色值有上限和下限 。最小值为00,最大值为ff 。如果最小值是00减去任意值,仍然是00,如果最大值ff加上任意值,仍然是ff 。
回答一个新手常问的问题,应该填多少色偏?
色偏值不是一个固定值,而是有一个判断趋势,这个趋势取决于你的需求,比如:
你要找的颜色很准,所以色偏值要小一点,甚至六个零 。
如果你要找的颜色差不多,就算符合要求,那就填色偏稍微大一点的 。
当然这里注意不要太大,否则会把差异大的颜色误认为符合要求的 。
在网上,很多教程的作者告诉你,偏色直接填333333或者22222 。这个数字可以是no,答案是yes 。经过333333色偏后,合格色峰值增加到总色的6.51%,经过22222色偏后,合格色峰值增加到总色的2.13% 。
偏色可以填333333,但是不要把它当成一个固定的偏色值,也不要认为偏色的六个数一定都一样 。也可以填写333234或者302010 。记得看需求 。
还有一个问题,高偏色好还是低偏色好?
低色偏:低公差和高速度 。
高色偏:耐受性高,速度慢 。
两者各有利弊 。
【未完待续 。。。】

    推荐阅读