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

软件版本: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

快捷导航

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

发新话题 回复该主题

[郭立员] [3分钟学堂]用比色命令重构“找图”命令 [复制链接]

1#

大家好,我是公众号3分钟学堂的郭立员~

平时找图的时候会遇到这种情况,明明两张图看着一样,但是找图命令就是找不到,然后我们就会修改相似度或者偏色,但是发现依然找不到。

这是什么原因呢?

找图命令的原理是要求每一个像素点的颜色值都相同(相近),这里重点是“每一个像素点”,这个要求非常严苛。

即使是100个像素有99个相同,也会找图识别,可能有人谁说,修改相似度就行了,其实相似度是针对颜色值的相似,而不是像素格式的相似。

那么有没有针对像素个数相似的方法呢?

我想到的方法是遍历所有颜色点进行比色,比色成功的记录一下,然后把所有成功的数量和总的颜色点比较一下,看看相差不大,就是像素个数相近了。

举个例子,看下面这种图,要找图中两个相同内容。



图片放大15倍进行比对查看:



看起来很像的两个图片,放大后发现很多颜色点是不一样的,这也是为什么我们找图找不到的原因。

了解我们要做什么,下面开始说说实习原理:

①我们要知道找图的截图颜色信息,包括图片的尺寸和每个像素点的颜色值。



②提取出左上角第一个点的颜色值(333995)



③在屏幕上找到颜色值(333995)的所有点,每个符合要求的点都往后比对一个图片大小位置的所有颜色值。

会有很多点是颜色值(333995),并不都是我们想要查找的位置。

④为了排查不符合要求的,我们需要在图片大小区域内进行逐个像素比对,每比对成功一个像素,就记录+1,所有像素点都比对完后,和区域总像素点数量比较,看成功数量的占比。

如果比例比较高,就认为是符合要求的点,把这个点的位置输出作为“找图”的返回坐标。

原理就是这样的,不过我在写代码的时候感觉有很多要注意的细节。

下面看看我的测试代码,此代码仅供学习,如果纰漏的地方自行完善。

  1. Import "cjson.lua"
  2. Dim Path = "/sdcard/$MuMu共享文件夹/1.png"
  3. Dim PixelData =Image.GetPicData(Path)
  4. Dim col=UCase(Hex(RGB(PixelData[1][1][3],PixelData[1][1][2],PixelData[1][1][1])))
  5. TracePrint col
  6. Dim pic_x=Len(PixelData)
  7. Dim pic_y=Len(PixelData[1])
  8. Dim x=GetScreenX()
  9. Dim y=GetScreenY()
  10. Dim 颜色数量
  11. 颜色数量 = GetColorNum(0,0,x,y,col&"-050505",0.95)
  12. TracePrint "找到的颜色数量有" & 颜色数量 & "个"


  13. KeepCapture
  14. For n = 1 To y
  15. For m = 1 To x
  16. If CmpColor(m, n, col&"-050505", 0.95) = 0 Then

  17. Dim s=0
  18. For j = 1 To pic_y
  19. For i = 1 To pic_x
  20. Dim cor=UCase(Hex(RGB(PixelData[i][j][3],PixelData[i][j][2],PixelData[i][j][1])))
  21. If CmpColor(m+i-1, n+j-1, cor&"-050505",0.9)=0 Then
  22. s=s+1
  23. End If
  24. Next
  25. Next

  26. If s > cint((pic_x*pic_y)/2) Then
  27. TracePrint "---------------------------"
  28. TracePrint "坐标:",m,n
  29. TracePrint "相似程度:",s*100/(pic_x*pic_y),"%"
  30. TracePrint "满足条件"
  31. End If
  32. End If
  33. Next
  34. Next
  35. ReleaseCapture
复制代码

测试结果中,把相似程度高于50%的提取出来了。



说说优缺点吧:

优点:能把相似的图找出来

缺点:找图速度极慢,参数需要精细设置

=正文完=


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

QQ交流群:936858410
2#

优秀优秀

发新话题 回复该主题