`
xiagu1
  • 浏览: 48206 次
  • 性别: Icon_minigender_1
  • 来自: 北京
社区版块
存档分类
最新评论

针对验证码,做一个简单的自动网上签到程序(三)

阅读更多

针对验证码,做一个简单的自动网上签到程序(二) 中已经进行了图像二值化、降噪等处理,也得到了非常好的验证码的二值化字符串。但是在进行的试验中发现出现一些错误,尤其是在二值化之后7变成1 的情况经常出现,其原因在于前面二值化的时候选取的阈值为200,而不是根据图像动态选取的阈值,阈值的选取并不能够包括全部字符信息。

为此查阅了文献,发现设定阈值有相当多的方法,我们选取较为常见的otsu法计算图像阈值。

#! /usr/bin/env python
#coding=utf-8
import Image,ImageEnhance,ImageFilter,ImageDraw
import ImageTk

def OtsuGray(image):
    # 创建Hist
    #image = Image.open("4.f")
    image.convert('L')
    hist = image.histogram()
    print  len(hist)
    print hist
    '''大津法由大津于1979年提出,对图像Image,记t为前景与背景的分割阈值,
    前景点数占图像比例为w0,平均灰度为u0;背景点数占图像比例为w1,平均灰度为u1。
    图像的总平均灰度为:u=w0*u0+w1*u1。从最小灰度值到最大灰度值遍历t,
    当t使得值g=w0*(u0-u)2+w1* (u1-u)2 最大时t即为分割的最佳阈值。
     直接应用大津法计算量较大,因此我们在实现时采用了等价的公式g=w0*w1*(u0-u1)2。
    部分计算过程如下'''
    # 开始计算
    # 计算总亮度
    totalH = 0
    for h in range(0,256):
        v =hist[h]
        if v == 0 : continue
        totalH += v*h
        print h,totalH,v*h
        

    width  = image.size[0]
    height = image.size[1]
    total  = width*height
    print width
    print height
    
    print "总像素:%d;总亮度:%d平均亮度:%0.2f"%(total,totalH,totalH/total)

    # t=0和t=255的时候无法构成分割,所以从t=1开始计算一致到t=255
    # 初始化v值
    v = 0

    gMax = 0.0
    tIndex = 0
    
    # temp
    n0Acc = 0.0
    n1Acc = 0.0
    n0H   = 0.0
    n1H   = 0.0
    for t in range(1,255):
        v = hist[t-1]
        if v == 0: continue
        
        n0Acc += v          #灰度小于t的像素的数目
        n1Acc = total - n0Acc #灰度大于等于t的像素的数目
        n0H += (t-1)*v          #灰度小于t的像素的总亮度
        n1H = totalH - n0H  #灰度大于等于t的像素的总亮度

        if n0Acc > 0 and n1Acc > 0:
            u0 = n0H/n0Acc # 灰阶小于t的平均灰度
            u1 = n1H/n1Acc # 灰阶大于等于t的平均灰度
            w0 = n0Acc/total # 灰阶小于t的像素比例
            w1 = 1.0-w0      # 灰阶大于等于t的像素的比例
            uD = u0-u1
            g = w0 * w1 * uD * uD
            print 'g=',g
            #if debug > 2: print "t=%3d; u0=%.2f,u1=%.2f,%.2f;n0H=%d,n1H=%d; g=%.2f"\
            #   %(t,u0,u1,u0*w0+u1*w1,n0H,n1H,g)
            print t,u0,u1,w0,w1,g
            if gMax < g:
                gMax   = g
                tIndex = t
        
#    if debug >0 : print "gMaxValue=%.2f; t = %d ; t_inv = %d"\
#               %(gMax,tIndex,255-tIndex)            
    print tIndex 
    return tIndex
#a=OtsuGray()
#print a
 

 上述计算方法也是从javaeye摘抄来的,算法很简单。

这样计算了每幅图片的阈值之后发现仍然存在着图像缺失的问题等。因此需要考虑对图像再做进一步的处理,以便二值化后基本反映数字的轮廓又能够不丢失信息。

因此我们在二值化之前对图像进行二值化和边界增强处理。后面降噪的步骤可以去掉。

相应的部分代码改为

    image = image.filter(ImageFilter.EDGE_ENHANCE())
    image = image.filter(ImageFilter.MedianFilter())
    image.show()
    #enhancer = ImageEnhance.Contrast(im)
    otsu1=otsu.OtsuGray(image)
    #twoValue(image,200)
    print otsu1
    twoValue(image,otsu1)
 

 

这样我们的字模提取已经基本上全部完成,可以开始制作字模库。验证码的识别仅仅剩下最后一步,模板与验证码的对照步骤。现在处理的效果是这样的。

原图



 

处理后



 

虽然现在的处理效果没有前面的处理办法边缘平滑,数字清晰,但是对于每个验证码,反映的基本特征均比较清晰,稳定性也大大增强。

 


 

 

 

 

  • 大小: 2 KB
  • 大小: 1.2 KB
分享到:
评论

相关推荐

    迅雷自动签到,自动登录,使用大漠插件

    本项目“迅雷自动签到,自动登录,使用大漠插件”是针对迅雷游戏加速器的一个自动化脚本,旨在帮助用户自动完成登录和签到流程,从而节省时间,避免手动操作的繁琐。以下将详细介绍该项目涉及的主要知识点: 1. **...

    天翼网盘自动签到.zip

    标题“天翼网盘自动签到.zip”表明这是一个与天翼网盘自动化签到相关的压缩文件,其中可能包含了实现这一功能的代码或脚本。描述中的“天翼网盘自动签到.zip”再次强调了文件内容的核心,即针对天翼网盘的每日签到...

    习讯云自动签到(傻瓜式).zip

    它可能是一个Python脚本或者其他编程语言编写的程序,用户只需要运行这个"main"文件,就能启动自动签到功能。程序可能会模拟用户的登录行为,然后自动完成签到步骤,包括输入必要的信息、点击按钮等。由于是“傻瓜式...

    52签到小助手V2.1.93.zip

    【52签到小助手V2.1.93.zip】是一个包含自动化签到功能的软件包,主要用于提高用户在日常签到活动中的效率。这个软件的版本号为V2.1.93,是V2.2版本之前的最后一个可用更新,意味着它可能包含了开发者认为稳定且功能...

    百度贴吧一键签到源码----源码

    标题中的“百度贴吧一键签到源码”指的是一个程序代码,用于实现自动化签到功能,主要针对百度贴吧这个在线社区平台。源码是程序员编写的原始指令集合,它揭示了软件内部的工作机制,通常用于学习、修改或扩展功能。...

    IAPP职教云自动签到助手源码.zip

    "IAPP职教云自动签到助手源码.zip" 是一个包含源代码的压缩文件,其中的源代码是为实现自动签到功能而设计的,针对的是"IAPP职教云"这个平台。IAPP职教云可能是某职业教育平台的移动应用,提供了在线学习、签到等...

    基于AutoJS的支付宝会员积分签到脚本.zip

    描述进一步确认了脚本的功能,即用于自动签到以获取支付宝会员积分。在日常生活中,许多应用程序,包括支付宝,提供了会员积分系统,用户可以通过签到等方式积累积分,兑换各种奖励。通过使用这样的脚本,用户可以...

    基于Android的签到点名系统[www.javabysj.cn].rar

    《基于Android的签到点名系统》是一款专为移动端设计的应用程序,主要应用于教育机构、企业等场合,方便进行日常的签到与点名管理。本文将深入探讨该系统的架构设计、功能实现以及技术选型。 一、系统架构 基于...

    流量获取.rar的工具脚本

    1. "联通免码每日领取1GB流量日包v1.2.exe" 这个文件名暗示了一个针对中国联通用户的程序,版本号为v1.2,可能是一个应用程序,用于每天免费领取1GB的一日流量包。这个工具可能需要用户拥有联通手机号,并且可能需要...

    C#版本模拟登陆百度,2018年4月27日可用

    本项目"**C#版本模拟登陆百度,2018年4月27日可用**"提供了一个C#语言编写的程序,专门用于模拟用户登录百度网站,而且在发布时是有效的。这个程序的独特之处在于,它不仅能够完成基本的登录操作,还为开发者提供了...

    2012年国培挂机软件 最新

    挂机软件是一种能够在用户计算机后台运行,执行特定任务的程序,通常用于自动化某些重复性工作,比如在线学习平台的签到、刷课等。这款软件的最新版本为2012V3.01,它带有自动验证码识别功能,意味着它可以自动处理...

    百度贴吧顶帖/签到源码-易语言

    【标题】"百度贴吧顶帖/签到源码-易语言"揭示了这是一个使用易语言编写的程序,其主要功能是实现对百度贴吧的自动顶帖和签到操作。易语言是中国的一种编程语言,设计目标是使编程变得更加简单、直观,适合初学者和...

    QQ任务助手V4.46.rar

    一键签到功能是针对QQ的各种活动设计的,如QQ空间、QQ音乐、QQ阅读等。用户只需点击一下,即可完成所有关联应用的签到操作,确保不会错过任何连续签到的奖励。这不仅避免了用户忘记签到的情况,还帮助他们轻松积累...

    物联通手机版7.514.rar

    优化:业务行程表支持筛选自动签到和手动签到的数据类型 优化:业务交账表增加销售金额、销售退货金额、底部加入金额合计,支持导出Excel 新增:BS端增加动态验证码,提升系统安全性。 七、其他新增调整 ...

    指北针百度知道软件 v1.4.9.10

    自动签到功能保证了用户活跃度,而自动同问和同等则进一步增强了问题的覆盖面和影响力。 软件中包含的一些文件如`ip.Dat`、`mqpd2.dat`、`mqpd.dat`等可能是用于存储配置信息、账号数据或网络通信的数据文件。`DB...

    BBSXP青年人美化版

    增加版主签到程序(来自 RoyRoy) 19.可自定义江湖门派的名称,让注册用户只能在其中选择(来自 RoyRoy) 20.小字报可以由管理员自行管理 21.论坛随机广告不再减缓页面的显示速度 22.对论坛索引采用...

Global site tag (gtag.js) - Google Analytics