• 按键公众号 :
按键精灵电脑版
立即下载

软件版本:2014.06
软件大小:22.9M
更新时间:2021-12-03

按键精灵安卓版
立即下载

软件版本:3.7.2
软件大小:46.2M
更新时间:2023-05-10

按键精灵iOS版
立即下载

软件版本:1.8.0
软件大小:29.2M
更新时间:2023-03-21

按键手机助手
立即下载

软件版本:3.8.0
软件大小:262M
更新时间:2023-05-30

快捷导航

登录 后使用快捷导航
没有帐号? 注册

发新话题 回复该主题

[郭立员] 【老手都不知道的知识点】找图、多点找色、找字的原理 [复制链接]

1#

大家好,我是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也行,记得一定要看需求。



再有一个问题,偏色值高点好还是低点好?


偏色低:容差率低,速度快。

偏色高:容差率高,速度慢。

两种各有优缺点。


【未完待续。。。】


    已有1评分我要评分查看所有评分

    最后编辑microgly 最后编辑于 2021-11-09 21:37:07
    本主题由 按键精灵总策划 果壳王子 于 2021/11/11 13:08:07 执行 审核帖子 操作
    扫码免费获取我的基础教程【视频教程】
    扫码下方二维码关注我的公众号:3分钟学堂

    QQ交流群:936858410
    2#

    郭老师的精品一定要拜读

    江中游老师拥有国内外近6000人内部VIP会员,上百万次的支持率,史上最全面、最详细、最易懂的全方位一体化终极教学
    江中游QQ:2025177703;390941087;2426410388
    江中游微信号:390941087;bauuia
    更多更全面教学请关注江中游抖音号:32135374718;快手号:1398558462

    3#

    基础理论课程

    有事就QQ 136874377 QQ交流群300857068   接各种脚本定做 价格优惠
    4#

    回复 2楼bauuia的帖子

    江老师出品才是精品

    扫码免费获取我的基础教程【视频教程】
    扫码下方二维码关注我的公众号:3分钟学堂

    QQ交流群:936858410
    5#

    学习了

    6#

    我是为了水晶焰而来, 上面写的是什么,我怎么知道!

    7#

    顶!

    8#

    顶!

    发新话题 回复该主题