gsbyqjkwdg 发表于 2015-4-22 13:02:51

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.iyunv.com/ubunoon   ;   http://qtrstudio.com/blog   
  email:netubu#gmail.com
  copyright: Copyright © 2011. All rights reserved.
页: [1]
查看完整版本: python验证码识别——前处理