每日一学(滑块拼图)
template_rgb, 思路解析 一、详情查看 二、解析 难点一图片的获取与缺口值定位 在使用selenium模拟操作过程中对selenium返回的源码分析可以发现图片链接处理后请求图片保存到本地下图的替换 去掉笔误 利用cv2识别出缺口位置到此第一步定位完成 import cv2target hycdn.jpg template hycdn.png target_rgb cv2.imread ( target ) target_gray cv2.cvtColor ( target_rgb,。
b,4 ) /10 #轨迹生成时间 v 0 while current distance: #小于距离值 if current mid: # a 2else:a -3v0 vv v0a*tmove v0*t1/2*a*t*tcurrent movetrack.append ( round ( move )) return trackdistance 227track_list get_track ( distance ) print ( track_list ) 四、拖曳滑动 1.定位滑块位置2.生成滑块轨迹3.点击并保持不放滑块4.依据生成的滑块轨迹移动滑块到缺口位置5.松开滑块 五、思路汇总 1.登录账号信息2.定向到滑块拼图网页3.等待3s确保滑块拼图加载完毕4.切换框架到验证码frame5.提取拼图背景图与拼图块链接请求后保存到本地6.cv2求出滑块缺口位置7.生成轨迹模拟列表8.定位滑块依据轨迹列表滑动到指定位置9.松开滑块等待2s10提取数字信息进行累加完成 六、验证 效果演示前端进行滑块拼图后端会对数据进行处理图一是操作55-57的验证动态演示图二是后端输出验证后获取的数字信息进行累加打印出页数与当前页累加结果 源码因网站维护者要求禁止源码可提供思路与关键代码都在思路解析里面 , d value if abs ( a ) abs ( b ) :distance c [ 0 ] else:distance d [ 0 ] print ( distance ) 三、轨迹模拟 import randomdef get_track ( distance ) :track [ ] #轨迹列表 current 0 #当前记录值 mid distance*7/8 #中间值值前为加速度值后为减速度 t random.randint ( 3, cv2.COLOR_BGR2GRAY ) template_rgb cv2.imread ( template, c, cv2.TM_CCOEFF_NORMED ) # 模板匹配在大图中找小图 value cv2.minMaxLoc ( res ) a, 0 ) res cv2.matchTemplate ( target_gray。
评论列表