Python对旋转图片验证码的识别和破解(二)

Python对旋转图片验证码的识别和破解

本文主要使用python + selenium来破解旋转突破的验证码;其中用到numpy和OpenCV(CV2)来进行图片拼接,转换,遮罩,识别等

(二)将验证码图片与所有的图片拼接的大图比较,找到旋转角度

  • 使用cv2.getRotationMatrix2D设置选择矩阵,warpAffine进行图片旋转

getRotationMatrix2D比较简单,参数为:旋转圆心坐标(x,y), 旋转角度, 放缩比例

  • 使用cv2.matchTemplate来匹配图片

matchTemplate使用各种不同的方法来匹配图片,具体可以参考资料:
result = cv2.matchTemplate( img_all, img, cv2.TM_CCOEFF_NORMED)
min_max_loc = cv2.minMaxLoc(result)

其中matchTemplate的最后一个参数为匹配方法,具体说明见:https://docs.opencv.org/3.3.0/df/dfb/group__imgproc__object.html#ga3a7850640f1fe1f58fe91a2d7583695d
min_max_loc返回(匹配度和匹配位置),但是匹配度与使用的最后一个参数相关,有的匹配方法,匹配度越大越好,有的相反。在此我们使用了TM_CCOEFF_NORMED,并取min_max_loc中的maxVal,越大(接近1)越相似。

核心代码如下:

def is_existed(img_all, img, semilar=0.9):
    '''
    在img_all中寻找img,当相似度到达semilar时停止
    参数:
        img_all:
        img:
        semilar:相似度阀值
    返回:    (maxValue, maxLoc, Angle)
        maxValue: 相似度- 0:不相识,1:全相似
        maxLoc:最相似的位置(x,y)
        Angle:转换到最相似的旋转角度
    '''
    if semilar <0 or semilar >1:
        semilar
  • 3
    点赞
  • 15
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值