opencv识别微信登录验证滑块位置
目标
识别微信登录新账号需要拖动滑块验证时,目标块相对于图片的位置
房屋相关信息:
滑块与目标位置的距离是随机的,在一定范围内,如果最大值和最小值为[min,max],滑块可以在距离目标左右10个单位的误差内滑动,也可以验证滑块验证码有3次重试的机会。三次验证失败,微信会自动更换验证码,无限期刷新验证码。机器学习应该达到优秀的识别率,但是考虑到时间学习成本,它并没有使用机器学习来对相关的图片信息进行学习。
截图——通过安卓自带的截图工具截取并验证界面,代码中是screenshot.jpg
三个方案
1.随意拖动
基本思路:
每次验证码重试三次,都会拖到三个位置:min10、(minmax)/2、max-10。
如果失败,请刷新验证码并重复上述过程
优点:
单个验证码通过率较低,不需要添加python-opencv层下载图片和滑块图片。因为你可以无限期重试,如果你尝试更多次,你可以通过缺点:
判断的位置是由最小值和最大值推断出的最小值和最大值的大致范围。如果变化很明显,程序也应该相应地修改最小值和最大值。2.根据颜色确定图片的目标位置(我打算采用这个方案)
基本思路:
根据目标位置颜色的规律性(通常是灰黑灰黑),建立颜色范围
从图片中,使用inRange将图片转换为黑白,白色部分是与原始图片中的颜色范围一致的区域
用findContours找出所有的轮廓,根据轮廓所涉及的元素点的最大数量来判断目标位置的大概范围
代码实现
#阅读截图=cv2 . imead(' screen . jpg ')#筛选出区域范围=cv2.inrange(截图,np.array ([90,90,90]),np.array ([115,115,115]) #从graph _中找出所有轮廓,CNTs,_=cv2 . find contours(in range . copy(),cv2.retr _ external,cv2 . chain _ approach _ simple)#对所有轮廓进行排序。排序是基于cnts点数排序(key=len,Reverse=True)#取cnt中CNT的前两个轮廓(有些图片的目标位置不一定是第一个轮廓)[0: 2]CNT中的位置: xsum=0x counter=0 CNT中的位置:xcounter=1xsum=位置[0] [0] #计算所有点的X坐标的平均值,在此基础上做60像素的偏移。这个偏移量可以根据你的手机来调整。x=int(xSum/xCounter-60) #在截图上画一条红线,表示标识的X坐标位置cv2.line(截图,(X,0),(X,500),(0,0,255),5) cv2.imshow('屏幕)
单个验证码通过率中等。不下载图片和滑动图表的缺点:
判断的位置仍然是一个粗略的范围,与第一随机位置范围的精度相比有很大的提高。需要添加python-opencv层,需要截图根据滑块识别目标位置。
滑块和目标位置的区别在于,在目标位置添加了一层灰黑透明的前景色,在处理图像时,首先在滑块图像中添加相同的灰黑透明前景色
将目标位置与已处理的滑块匹配
代码实现:
#读取滑块图片,为其添加相同的灰黑色透明前景色,然后将其灰化。block=cv2 . imead(' block . jpg ')block copy=block . copy()w,H=block . shape[:-1]cv2 . rectangle(block copy,(0,0),(w H),(47,47,47),-1) cv2。addweighted(块复制,0.7,块,0.3,0,块)block=cv2。cvtcolor(块,cv2。color _ rgb2gray) #读取验证码图片。而gray captcha=cv2 . imead(' captcha . jpg ')captcharay=Cv2 . CVT color(captcha,Cv2。COLOR_RGB2GRAY)#在captcha RES=cv2 . match template(captcha gray,block,cv2.tm _ sqdiff) min _ val,max _ val,min _ loc,Max_loc=cv2.minMaxLoc(res)#绘制矩形cv2 .矩形(captcha,min _ loc,(min _ loc [0] w,min _ loc [1] h),(0,0,255),-1) cv2.优势:
单个验证码通过率高。如果判断成功,位置一般都很准。缺点:
需要加入python-opencv层,需要下载原图和滑块图片(原图和滑块图片的下载还没有研究过)。当判断不成功时,判断位置一般会偏离目标位置。
三种方案中,第二种验证率较好,与第三种相比,只需要对验证界面进行截图,更容易开发。综上所述,第二个方案更好。
版权声明:opencv识别微信登录验证滑块位置是由宝哥软件园云端程序自动收集整理而来。如果本文侵犯了你的权益,请联系本站底部QQ或者邮箱删除。

















