zoukankan      html  css  js  c++  java
  • python验证码识别——前处理

    目前不少系统的验证码做得越来越复杂,人眼都难以识别,尤其是QQ之类的验证码,想要识别,太难了。

    现在有这样一个验证码:

    一般的验证码识别,都是先进行前处理,然后分割,在进行识别。这个验证码没有其他噪音,但存在一条横穿的曲线干扰,并且验证码中字体是粘连在一起的。

    如果不将干扰曲线去除,那么整个识别将会受到一定的影响,为此,先要去掉这条曲线,首先通过的办法是将先获取曲线的头位置(x,y),这一部分很简单,代码如下:

    1 def get_left_start_point(im):
    2 start_point = (0,0)
    3 found = False
    4 w, h = im.size
    5 data = list(im.getdata())
    6 for x in xrange(w):
    7 for y in xrange(h):
    8 if data[ y*w + x ] != white:
    9 found = True
    10 start_point = (x,y)
    11 break
    12
    13 if found:
    14 break
    15 return start_point

    取到头结点后,然后依次从左到右遍历过去,上下判断是否为黑点,将线条坐标位置保存起来,之后进行线条位置去除,(感谢孙志海朋友的提示):(代码部分略)


    于是可以得到去除黑线后的图像为:

    除了几个孤立的点,图像中的黑线基本被去除干净,下面是几张是处理的比较好的:

    下面这一张处理的比较差:

    鉴于之前有blog内容被网络转载,并不注明出处,因此添加下面内容:

    author:ubunoon

    homepage: http://qtrstudio.com

    blog: http://www.cnblogs.com/ubunoon   ;   http://qtrstudio.com/blog    

    email:netubu#gmail.com

    copyright: Copyright © 2011. All rights reserved.

  • 相关阅读:
    SVD singular value decomposition
    Eigen参考资料
    设置C++ cout输出精度
    eigenMatrix
    电池容量单位 Wh和 Ah的关系
    windows10 如何关闭快速关机功能电源选项
    TIA Portal 和 scout 之间的驱动器地址分配
    SIMATIC 1500 PLC 同步轴,状态字StatusWord信号描述
    Simotion 凸轮同步,偏移凸轮起点
    ROS Create a Catkin Workspace
  • 原文地址:https://www.cnblogs.com/ubunoon/p/python_captcha_disturb.html
Copyright © 2011-2022 走看看