您现在的位置是:首页 > 文章详情

python五行代码解决滑块验证的缺口距离识别,破解滑块验证

日期:2019-03-16点击:475

目前网上关于滑块的缺口识别的方法很多,但是都不极简,看起来繁杂,各种算法的都有,有遍历的有二分法的,今天写个最简单,准确率最高的。

直接看代码:


def FindPic(target, template):
    """
    找出图像中最佳匹配位置
    :param target: 目标即背景图
    :param template: 模板即需要找到的图
    :return: 返回最佳匹配及其最差匹配和对应的坐标
    """

    target_rgb = cv2.imread(target)
    target_gray = cv2.cvtColor(target_rgb, cv2.COLOR_BGR2GRAY)
    template_rgb = cv2.imread(template, 0)
    res = cv2.matchTemplate(target_gray, template_rgb, cv2.TM_CCOEFF_NORMED)
    value = cv2.minMaxLoc(res)


使用cv2库,先读取背景图,然后夜视化处理(消除噪点),然后读取模板图片,使用cv2自带图片识别找到模板在背景图中的位置,使用minMaxLoc提取出最佳匹配的最大值和最小值,返回一个数组形如(-0.3, 0.95, (121,54),(45, 543))元组四个元素,分别是最小匹配概率、最大匹配概率,最小匹配概率对应坐标,最大匹配概率对应坐标。


我们需要的是最大匹配概率坐标,对应的分别是x和y坐标,但是这个不一定,有些时候可能是最小匹配概率坐标,最好是根据概率的绝对值大小来比较。


滑块验证较为核心的两步,第一步是找出缺口距离,第二步是生成轨迹并滑动,较为复杂的情况下还要考虑初始模板图片在背景图中的坐标,以及模板图片透明边缘的宽度,这些都是影响轨迹的因素。


2019-03-17-22_10_58.png


------------------------------


ID:Python之战


|作|者|公(zhong)号:python之战 


专注Python,专注于网络爬虫、RPA的学习-践行-总结


喜欢研究技术瓶颈并分享,欢迎围观,共同学习。


独学而无友,则孤陋而寡闻!


--------------------------

原文链接:https://yq.aliyun.com/articles/694040
关注公众号

低调大师中文资讯倾力打造互联网数据资讯、行业资源、电子商务、移动互联网、网络营销平台。

持续更新报道IT业界、互联网、市场资讯、驱动更新,是最及时权威的产业资讯及硬件资讯报道平台。

转载内容版权归作者及来源网站所有,本站原创内容转载请注明来源。

文章评论

共有0条评论来说两句吧...

文章二维码

扫描即可查看该文章

点击排行

推荐阅读

最新文章