按键精灵官方网站(老手都不知道的知识点)

大家好,我是公众号3分钟学堂的郭立员,今天给带来一期基础知识的文章,主要讲一下找图、多点找色、找字之间的联系与区别,这是一篇基础原理的教程,可能会有些枯燥。 由于篇幅比较长,分两期更新。本期主要讲找图的原理以及偏色的原理。图色原理 无论是找图、找色、比色、找字这些命令都可以统称为图色命令,所有图色命令都有共同的特点,就是它们针对于图像像素点的颜色值和位置进行处理的。图像像素点是什么 我们把图像放大会发现,图像是由一个个颜色块组成的,由于这些颜色块非常小,在不放大的情况下,我们是看不出它们有明显分块界限的。那这些带有颜色的小方块,就是图像的像素点。 像素点通常是近似正方形的,这里我用的是近似,它是由显示器屏幕的硬件决定的。 像素点是在一个二维平面上排列的,分为横向和纵向,大量的像素点排列在一起就组成一张图像了。找图命令的原理 还是以上面那张图为例,我们截取一个4*4的图片,开始找图。 这里我把4*4图片的每一个像素点都标注了序号,一共是16个序号。 下面说一下找图的过程,我以从左上到右下顺序的找图为例。 ①从马里奥图片左上角的第一个像素开始,寻找序号1像素点的颜色值,如下图那样一个个像素进行比对。 ②假设找到了和序号1一样颜色的像素点,记录一下这个点的位置。 ③开始对上一步中找到点的下一个像素点和序号2的颜色比对是否一样,如果一样的话,再用下一个像素点颜色比对序号3的颜色,依次类推一直比对到序号16的颜色。比对颜色也是按照4*4的位置比对,就是序号1-4是第一行,序号5-8是第二行…… ④上一步比对序号2-16颜色有两种可能性: 一是完全一样,如果完全一样说明我们找图成功了,找图命令返回步骤②记录的位置,也就是我们常用的intx,inty。 二是比对到某个序号颜色值不一样,说明比对失败,继续从步骤②位置的下一个像素点开始,找寻序号1像素点的颜色,循环上面的操作,以此循环往复。 ⑤循环比对所要找图区域内的所有颜色,如果比对完所有颜色都没有比对成功,说明找图命令没有找到图,为了方便脚本判断,会把-1赋值给intx,inty。 以上这些步骤就是找图的原理。 那么想一下哪些因素会影响找图速度? ①获取像素点颜色值的快慢,这也是为什么用“截图到内存命令”会提高找图速度的原因。 ②计算数据的速度,也就是比对两个像素点颜色值是否一样的用时。 ③所要找的图片越靠前找到用时越少。 ④序号1像素点在整个找图区域内出现的次数,次数越多可能比对的时间就多,这里用“可能”是因为如果第一次或者前几次出现就找到图了,下面的就不需要继续比对了。 ⑤所找图的图片尺寸越小速度越快,比如文中的例子是4*4的图,只要比对16个颜色就可以,如果是50*50就要比对2500个点。当然对于现在计算机来说,16和2500的计算用时的差距是微乎其微的,但是如果进行循环找图,比如循环1万次,16万和2500万,用时就会有明显的区别了。 针对截图在说一下,是不是图片越小越少,不是的,如果只有1个像素点,那么会有大量的重复可能性,从而导致找图找到错误的位置,我们截图本着一个原则:在保证截图具有唯一标识性的前提下,图片越小越好。偏色和相似度 使用找图命令的时候,还有两个参数,它们在上面找图原理没有说到,就是偏色和相似度。 它们是做什么用的呢? 偏色和相似度的作用是一样的,都是为了增加找图的容差率(容错率),就是把与要找图非常接近的颜色也看做是有效的颜色,从而实现当找图区域的颜色发生细微变化后,还能通过找图命令找到我们想要的位置坐标。下面开始介绍一下偏色:(一)偏色 在找图代码中,这个参数默认是000000,也就是无偏色。这六个数字代表什么呢? 它们分成3组,每一组分别代表一种颜色。 这里需要强调一下颜色顺序是蓝色、绿色、红色,如果你有关于颜色的基础,是不是想说颜色值的顺序不是红绿蓝吗,没错在多数颜色相关的软件或者程序中确实是红绿蓝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的偏色会有什么影响呢? 原本我们找序号1的颜色值是d6330a,如果加上偏色010101,那么符合要求的颜色值,就由原来的1个变成27个。 符合要求颜色值的计算公式是d6330a±010101 按颜色拆分计算: 蓝色:d6±01得到范围是d5~d7 绿色:33±01得到范围是32~34 红色:0a±01得到范围是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的颜色值时,就不是比对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。 回答新手一个常问的问题,偏色值要填多少合适呢? 偏色值的大小并不是一个固定的数值,但它有一个判断趋势,要根据你的需求来定,比如说: 你希望找的颜色非常精准,那偏色值就要填小一点,甚至是六个0这种无偏色的情况。 如果你希望找的颜色相近的就算符合要求的,那么偏色就稍微填大一点。 当然这里注意不要太大,否则就会把相差很大的颜色也误认为是符合要求的颜色。 在网上很多教程的作者告诉你,偏色直接填333333或者是222222,这个数字可以不,答案是可以。偏色333333后,符合颜色的增加峰值到总颜色的6.51%,偏色222222后,符合要求的增加峰值到总颜色的2.13%。 偏色你填333333可以,但是不要把它当成固定的偏色值,也不要认为偏色的6个数必须都是一样的,你填333234也可以,填302010也行,记得一定要看需求。 再有一个问题,偏色值高点好还是低点好? 偏色低:容差率低,速度快。 偏色高:容差率高,速度慢。 两种各有优缺点。【未完待续。。。】

本文出自快速备案,转载时请注明出处及相应链接。

本文永久链接: https://kuaisubeian.cc/40767.html

kuaisubeian