开启辅助访问 切换到宽版

精易论坛

 找回密码
 注册

QQ登录

只需一步,快速开始

用微信号发送消息登录论坛

新人指南 邀请好友注册 - 我关注人的新帖 教你赚取精币 - 每日签到


求职/招聘- 论坛接单- 开发者大厅

论坛版规 总版规 - 建议/投诉 - 应聘版主 - 精华帖总集 积分说明 - 禁言标准 - 有奖举报

查看: 17080|回复: 88
收起左侧

[易源码分享] 滑块位置,图像算法分析分享

[复制链接]
结帖率:100% (7/7)
发表于 2019-7-25 17:39:17 | 显示全部楼层 |阅读模式   上海市上海市
分享源码
界面截图:
是否带模块: 调用了模块
备注说明: -
本帖最后由 wxyzyou 于 2019-7-25 17:50 编辑

这里只谈图像分析,不谈JS算法

最近分析某滑块验证图,发现该滑块可以通过简单算法找到位置
先上几组算法找到位置的图正确率在90%以上
1.png


下面讲分析心得

该滑块,有两张图,图片的大小,同一固定的
底图.jpg    320X160
滑块.png   60X158

滑块真实部分大小 55X55滑块真实部分的Y和底图中的位置Y是一致的,利用此机制,可以定位一个较小的识别特征范围

X 左边
X1 右边
Y 顶边
Y1 底边
H 高度
W 宽度

按该验证图的呈现方式,知道 底图的左边60宽是不会出现滑块的,因为该位置要放置 滑块.png 的图片
所以 X=60
因为算法的原因,底图.jpg的右边有12个像素点,是不会出现算法需要的特征的
所以 X1=W-12
3.png

通过对滑块.png 进行颜色填充处理,可以定位到   Y
通过Y+55获得 Y1   Y1=Y+55  

2.png
这样拿到了 滑块在底图中的 Y和Y1

这样就定位了一个较小的识别范围
X=60
X1=W-12
Y=滑块顶部颜色定位   
Y1=Y+55 4.png


在该范围内找我们想要的特征
特征利用,滑块凹陷偏白色,
进行二值化后,会有一个明显的滑块区域

使用特征两个
1.左黑+右白  两列颜色值,像素数量大于15个的时候,判断为 特征1
2.上黑+下白 两行颜色值,像素数量大于15个的时候,判断为 特征2

6.png

5.png


7.png
同时存在两种特征,并且X轴相距较近,准确度在95%

下面是几个关键代码区

  
子程序名返回值类型公开备 注
获取滑块Y坐标整数型 -1未找到
参数名类 型参考可空数组备 注
滑块字节集
变量名类 型静态数组备 注
BMP类_位图操作 
W整数型 
y整数型 
x整数型 
OK逻辑型 
RGB整数型 
如果真 (BMP.从数据创建 (滑块))
返回 (-1)
W = BMP.取宽度 ()
计次循环首 (BMP.取高度 (), y)
计次循环首 (W, x)
RGB = BMP.取某点颜色 (x, y)
如果真 (RGB ≠ -1 RGB ≠ 255)  ' 底图红色
OK = 真
调试输出 (y, BMP.取某点颜色 (x, y))
跳出循环 ()

计次循环尾 ()
如果真 (OK)
跳出循环 ()

计次循环尾 ()
如果真 (OK)
返回 (y)
返回 (-1)


i支持库列表   支持库注释   
spec特殊功能支持库


  
子程序名返回值类型公开备 注
多点找色特征1整数型 纵向黑白特征 >20 基本符合
参数名类 型参考可空数组备 注
BMP类_位图操作
C_X整数型
C_Y整数型
C_X1整数型
C_Y1整数型
变量名类 型静态数组备 注
i整数型 
RGB整数型 
RGB_X1整数型 
Cont整数型 
计次循环首 (25, i)
如果真 (C_Y + i > C_Y1)  ' 超出范围
跳出循环 ()
RGB = BMP.取某点颜色 (C_X, C_Y + i)
RGB_X1 = BMP.取某点颜色 (C_X + 1, C_Y + i)
如果真 (RGB = #黑色 RGB_X1 = #白色 )
Cont = Cont + 1

计次循环尾 ()
返回 (Cont)
子程序名返回值类型公开备 注
多点找色特征2整数型 横向黑白特征 >20 <40 基本符合  
参数名类 型参考可空数组备 注
BMP类_位图操作
C_X整数型
C_Y整数型
C_X1整数型
C_Y1整数型
变量名类 型静态数组备 注
i整数型 
RGB整数型 
RGB_Y1整数型 
Cont整数型 
计次循环首 (40, i)
如果真 (C_X + i > C_X1)  ' 超出范围
跳出循环 ()
RGB = BMP.取某点颜色 (C_X + i, C_Y)
RGB_Y1 = BMP.取某点颜色 (C_X + i, C_Y + 1)
如果真 (RGB = #黑色 RGB_Y1 = #白色 )
Cont = Cont + 1

计次循环尾 ()
返回 (Cont)

  
子程序名返回值类型公开备 注
底图绘制定位坐标整数型 返回坐标X
参数名类 型参考可空数组备 注
BMP类_位图操作
C_X整数型
C_Y整数型
C_X1整数型
C_Y1整数型
变量名类 型静态数组备 注
W整数型 
H整数型 
X整数型 
Y整数型 
RGB字节集 
Cont整数型 
i整数型 
n整数型 
OK逻辑型 
整数型0X准确度数组
整数型0X
整数型0X
W = BMP.取宽度 ()
H = BMP.取高度 ()
计次循环首 (H, Y)
处理事件 ()
如果真 (Y ≥ C_Y Y ≤ C_Y1)
计次循环首 (W, X)
如果真 (X ≥ C_X X ≤ C_X1)
Cont = 多点找色特征1 (BMP, X, Y, C_X1, C_Y1)
如果真 (Cont > 14)
加入成员 (中, X)
计次循环首 (Cont, i)
如果真 (Y + i > C_Y1)  ' 超出区域
跳出循环 ()
BMP.置某点颜色 (X, Y + i, #红色 )
计次循环尾 ()
计次循环首 (30, n)
如果真 (Y + n > C_Y + 5)
跳出循环 ()
Cont = 多点找色特征2 (BMP, X, Y + n, C_X1, C_Y1)
如果 (Cont > 14)
加入成员 (高, X)
计次循环首 (Cont, i)
如果真 (X + i > C_X1)  ' 超出区域
跳出循环 ()

BMP.置某点颜色 (X + i, Y + n, #红色 )
计次循环尾 ()




计次循环尾 ()

如果真 (Y < C_Y + 6)
Cont = 多点找色特征2 (BMP, X, Y, C_X1, C_Y1)
如果 (Cont > 14)
加入成员 (低, X)
计次循环首 (Cont, i)
如果真 (X + i > C_X1)  ' 超出区域
跳出循环 ()
BMP.置某点颜色 (X + i, Y, #蓝色 )
计次循环尾 ()





计次循环尾 ()

计次循环尾 ()
如果真 (取数组成员数 () > 0)
调试输出 (“返回高精度X”, 高 [1])
返回 ([1])

' 对中低精度的 可以按照 中和低的成员,进行模糊匹配,返回较为准确的X
计次循环首 (取数组成员数 (), i)
计次循环首 (取数组成员数 (), n)
如果真 (取绝对值 ([i] - 低 [i]) < 5)
调试输出 (“返回模糊匹配的X”, 中 [i])
返回 ([i])

计次循环尾 ()
计次循环尾 ()
' 此模糊匹配用来测试
如果真 (取数组成员数 () > 0)
如果真 (取数组成员数 () > 0)
调试输出 (“返回模糊匹配的 低X ”, 低 [1] + 10)
返回 ([1] + 10)


如果真 (取数组成员数 () > 0)
调试输出 (“返回中精度的X”, 中 [1])
返回 ([1])

如果真 (取数组成员数 () > 0)
调试输出 (“返回低精度的X”, 低 [1] + 10)
返回 ([1] + 10)  ' 低精度 长度判断问题,适当的X+10 提高精度
返回 (0)


i支持库列表   支持库注释   
spec特殊功能支持库


下面是测试DEMO

该验证,首次使用大概率是点击就通过了
刷新使用的多了,才会出现滑块
点测试按钮,会一直刷新

使用到精易模块 7.3以上版本,请自行下载
使用到精易精易Web浏览器,自行下载安装 精易MiniBlink支持库
https://bbs.125.la/forum.php?mod=viewthread&tid=14400721&highlight=mini


滑块算法分析.e (889.79 KB, 下载次数: 1386)

评分

参与人数 3好评 +1 精币 +4 收起 理由
財財 + 1 支持开源~!感谢分享
Cappuccino + 1 + 2 支持开源~!感谢分享
精易小鱼 + 1 支持开源~!感谢分享

查看全部评分


本帖被以下淘专辑推荐:

签到天数: 4 天

发表于 2024-9-4 09:31:00 | 显示全部楼层   广东省佛山市
666666666666666666666
回复 支持 反对

使用道具 举报

结帖率:80% (4/5)

签到天数: 1 天

发表于 2024-9-2 00:11:46 | 显示全部楼层   河南省新乡市
感谢分享
回复 支持 反对

使用道具 举报

发表于 2024-6-6 21:23:54 | 显示全部楼层   河北省唐山市
6666666666666666666666666666666666666666666666666666666
回复 支持 反对

使用道具 举报

结帖率:65% (11/17)

签到天数: 24 天

发表于 2024-4-11 22:36:59 | 显示全部楼层   北京市北京市
支持开源~!感谢分享
回复 支持 反对

使用道具 举报

发表于 2024-1-6 12:55:44 | 显示全部楼层   四川省眉山市
非常好好
回复 支持 反对

使用道具 举报

结帖率:0% (0/1)

签到天数: 2 天

发表于 2023-12-16 17:54:14 | 显示全部楼层   江苏省苏州市
6666666666666666666666666
回复 支持 反对

使用道具 举报

发表于 2023-12-15 03:21:55 | 显示全部楼层   台湾省台北市
支持开源~!感谢分享
回复 支持 反对

使用道具 举报

结帖率:80% (4/5)
发表于 2023-11-27 20:33:01 | 显示全部楼层   广东省茂名市
支持开源~!感谢分享
回复 支持 反对

使用道具 举报

结帖率:33% (1/3)

签到天数: 5 天

发表于 2023-11-11 20:58:18 | 显示全部楼层   广东省东莞市
感谢大佬分享
回复 支持 反对

使用道具 举报

结帖率:50% (2/4)

签到天数: 5 天

发表于 2023-9-24 09:56:19 | 显示全部楼层   湖南省娄底市
谢谢分享,学习学习
回复 支持 反对

使用道具 举报

您需要登录后才可以回帖 登录 | 注册

本版积分规则 致发广告者

发布主题 收藏帖子 返回列表

sitemap| 易语言源码| 易语言教程| 易语言论坛| 易语言模块| 手机版| 广告投放| 精易论坛
拒绝任何人以任何形式在本论坛发表与中华人民共和国法律相抵触的言论,本站内容均为会员发表,并不代表精易立场!
论坛帖子内容仅用于技术交流学习和研究的目的,严禁用于非法目的,否则造成一切后果自负!如帖子内容侵害到你的权益,请联系我们!
防范网络诈骗,远离网络犯罪 违法和不良信息举报电话0663-3422125,QQ: 793400750,邮箱:wp@125.la
Powered by Discuz! X3.4 揭阳市揭东区精易科技有限公司 ( 粤ICP备12094385号-1) 粤公网安备 44522102000125 增值电信业务经营许可证 粤B2-20192173

快速回复 返回顶部 返回列表