赞
踩
直奔主题,小红书滑块验证页面如下:
通过页面分析得到滑块两张图片:bg.jpg和fg.png
可以看到bg的位置是固定不变的,fg到目标缺口位置的Y值也是不变的,但X值是变化的,怎样得到X值呢
首先要识别出缺口的位置,因为我们只识别缺口,不用考虑色彩,所以最先想到的是将彩色图片转为灰度图片,降低识别的复杂度:
这里我们采用了OpenCV的cvLoadImage和GrayImage.Clone,对图片进行灰度处理。
变灰后排除了色彩干扰,但两个图片的差异还是巨大,为了识别图形轮廓,必须继续将进行图片二值化处理,进一步降低明暗度的干扰。并且由于fg到目标缺口的Y值不变,为了排除相似缺口的干扰,按照fg的图片高度对bg进行了裁剪,裁剪后的bg更清晰了:
这里我们采用cvCanny函数,对图片进行二值化处理。
最后,调用cvMatchTemplate进行图像轮廓对比,并使用cvMinMaxLoc获取匹配度最高的一组坐标值,即可获取到X值
有了X值,我们就知道从fg的位置移动多少距离可以到达正确的缺口位置,于是经过多次测试,通过模拟鼠标的点击和拖拽操作,将fg滑块正确地移动到bg对应的缺口中,即可完成滑块的自动拖拽。
总结用到的技术:
1、Delphi调用Chrome内置浏览器,获取图片;
2、Delphi调用OpenCV图像处理和模板匹配,获取X值;
3、Delphi对鼠标光标控制,模拟人工操作
程序全部源码已上传:https://download.csdn.net/download/CashBell/19715727,欢迎交流指导。
Copyright © 2003-2013 www.wpsshop.cn 版权所有,并保留所有权利。