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

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

阅读更多

着手做验证码后又查了查相关的文章,发现做这个东西不用ocr的话思路都是一样的,估计是大家相互参考的问题吧,都是先降噪,然后二值化,然后建立自己的样本库,再进行比对。

在降噪进行二值化前,需要处理下颜色的问题,中间查到有人用php在做验证码,对于进行验证码识别的具体步骤和注意点,下面两篇文章讲的是最清楚的,比前面的文章讲的都要仔细。

http://blog.csdn.net/ugg/archive/2009/03/03/3953137.aspx

http://blog.csdn.net/ugg/archive/2009/03/09/3972368.aspx

 

大概的处理验证码,几个步骤:

首先的一步是单值化,去噪点,然后生成单个数字的库。

1.先进行去噪点,二值化。

参考这里讲的,很清楚,直接可以拿来用于图像二值化。

http://dream-people.iteye.com/blog/378907



 上面是我们需要进行处理的验证码图片

#! /usr/bin/env python
#coding=utf-8
#coding:utf-8
import sys,os
from PIL import Image,ImageDraw

#二值数组
t2val = {}
def twoValue(image,G):
    for y in xrange(0,image.size[1]):
        for x in xrange(0,image.size[0]):
            g = image.getpixel((x,y))
            if g > G:
                t2val[(x,y)] = 1
            else:
                t2val[(x,y)] = 0

# 降噪 
# 根据一个点A的RGB值,与周围的8个点的RBG值比较,设定一个值N(0 <N <8),当A的RGB值与周围8个点的RGB相等数小于N时,此点为噪点 
# G: Integer 图像二值化阀值 
# N: Integer 降噪率 0 <N <8 
# Z: Integer 降噪次数 
# 输出 
#  0:降噪成功 
#  1:降噪失败 
def clearNoise(image,N,Z):

    for i in xrange(0,Z):
        t2val[(0,0)] = 1
        t2val[(image.size[0] - 1,image.size[1] - 1)] = 1

        for x in xrange(1,image.size[0] - 1):
            for y in xrange(1,image.size[1] - 1):
                nearDots = 0
                L = t2val[(x,y)]
                if L == t2val[(x - 1,y - 1)]:
                    nearDots += 1
                if L == t2val[(x - 1,y)]:
                    nearDots += 1
                if L == t2val[(x- 1,y + 1)]:
                    nearDots += 1
                if L == t2val[(x,y - 1)]:
                    nearDots += 1
                if L == t2val[(x,y + 1)]:
                    nearDots += 1
                if L == t2val[(x + 1,y - 1)]:
                    nearDots += 1
                if L == t2val[(x + 1,y)]:
                    nearDots += 1
                if L == t2val[(x + 1,y + 1)]:
                    nearDots += 1

                if nearDots < N:
                    t2val[(x,y)] = 1

def saveImage(filename,size):
    image = Image.new("1",size)
    draw = ImageDraw.Draw(image)

    for x in xrange(0,size[0]):
        for y in xrange(0,size[1]):
            draw.point((x,y),t2val[(x,y)])

    image.save(filename)

image = Image.open("0.gif").convert('L')
twoValue(image,200)
clearNoise(image,4,1)
saveImage("t5.jpg",image.size)

def prtrbg(image):
        for y in xrange(0,image.size[1]):
            for x in xrange(0,image.size[0]):
                g = image.getpixel((x,y))
                if g>0:
                    g=1
                else:
                    g=0
                print g ,
            print "            "
    
ims = Image.open("t5.jpg")

ims = ims.convert('1')
prtrbg(ims)
#print ims.tostring()

 代码直接copy上面博客的内容,还都是javaeye的邻居。

降噪处理得到的图片如下


 基本上噪点都去掉了,再进行数值化。

 

1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1            
0 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1            
1 0 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1            
0 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1            
1 0 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1            
0 1 1 1 1 1 1 1 1 1 0 0 1 1 1 1 1 1 1 1 1 0 1 1 1 1 1 0 0 0 0 1 1 1 1 1 0 0 0 0 1 1 1 1 1 1 1 1 1 1            
1 1 1 1 1 1 1 1 1 0 0 0 0 1 1 1 1 1 1 1 0 0 0 1 1 1 0 0 0 0 0 0 1 1 1 0 0 0 0 0 0 1 1 1 1 1 1 1 1 1            
0 1 1 1 1 1 1 1 0 0 0 0 0 1 1 1 1 1 1 0 0 0 0 1 1 0 0 0 0 1 0 0 1 1 0 0 0 1 0 0 0 1 1 1 1 1 1 1 1 1            
1 1 1 1 1 1 1 0 0 0 0 0 0 1 1 1 1 1 1 0 0 0 0 1 1 0 0 0 1 1 0 0 1 0 0 0 1 1 1 0 0 1 1 1 1 1 1 1 1 1            
0 1 1 1 1 1 1 1 1 1 0 0 0 1 1 1 1 1 0 0 0 0 1 1 0 0 0 1 1 1 0 0 0 0 0 0 1 1 1 0 0 1 1 1 1 1 1 1 1 1            
1 1 1 1 1 1 1 1 1 1 0 0 1 1 1 1 1 0 0 1 0 0 1 1 0 0 0 1 1 1 0 0 1 0 0 0 1 1 0 0 0 1 1 1 1 1 1 1 1 1            
0 1 1 1 1 1 1 1 1 1 0 0 1 1 1 1 0 0 0 1 0 0 1 1 0 0 1 1 1 0 0 0 0 0 0 1 1 1 0 0 0 1 1 1 1 1 1 1 1 1            
1 1 1 1 1 1 1 1 1 1 0 0 1 1 1 0 0 0 1 1 0 0 1 1 0 0 1 1 1 0 0 0 1 0 0 1 1 1 0 0 0 1 1 1 1 1 1 1 1 1            
0 1 1 1 1 1 1 1 1 0 0 0 1 1 0 0 0 0 0 0 0 0 0 1 0 0 1 1 0 0 0 1 1 0 0 1 1 1 0 0 0 1 1 1 1 1 1 1 1 1            
1 1 1 1 1 1 1 1 1 0 0 0 1 1 1 0 0 0 0 0 0 0 0 1 0 0 1 1 0 0 0 1 1 0 0 0 1 0 0 0 1 1 1 1 1 1 1 1 1 1            
0 1 1 1 1 1 1 1 1 0 0 1 1 1 1 1 1 1 1 0 0 0 1 1 0 0 0 0 0 0 0 1 1 0 0 0 0 0 0 1 1 1 1 1 1 1 1 1 1 1            
1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 0 0 0 0 0 1 1 1 1 0 0 0 0 1 1 1 1 1 1 1 1 1 1 1 1            
0 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1            
1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1            
0 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1            
1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1            
0 1 0 1 0 1 0 1 0 1 0 1 0 1 0 1 0 1 0 1 0 1 0 1 0 1 0 1 0 1 0 1 0 1 0 1 0 1 0 1 0 1 0 1 0 1 0 1 0 1            

 

  • 大小: 2 KB
  • 大小: 1019 Bytes
分享到:
评论

相关推荐

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

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

    这个压缩包文件的标题揭示了一个使用AutoJS编写的脚本,目的是自动执行支付宝会员的积分签到任务。AutoJS是一款强大的自动化工具,适用于Android系统,允许用户编写JavaScript代码来实现对手机应用的自动化控制。在...

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

    总的来说,《基于Android的签到点名系统》是一个集成了现代移动技术和地理位置服务的高效管理工具,其设计与实现涵盖了Android开发的多个方面,对于学习和理解Android应用开发具有很高的实践价值。通过不断的优化和...

    流量获取.rar的工具脚本

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

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

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

    2012年国培挂机软件 最新

    "cs.exe"可能是“Client Server”(客户端服务器)的缩写,表明这可能是一个客户端应用程序,通过连接到服务器端来实现挂机功能。"自动验证码版"表明这个版本的软件集成了自动识别和处理验证码的技术,提高了软件的...

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

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

    QQ任务助手V4.46.rar

    快速登录是QQ任务助手的一个重要特性,它允许用户迅速进入QQ账号,无需经历繁琐的输入验证码和记忆密码的过程。通过安全验证和优化的登录流程,用户可以更便捷地管理自己的多个QQ账号,这对于经常需要切换账号的用户...

    物联通手机版7.514.rar

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

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

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

Global site tag (gtag.js) - Google Analytics