• linkedu视频
  • 平面设计
  • 电脑入门
  • 操作系统
  • 办公应用
  • 电脑硬件
  • 动画设计
  • 3D设计
  • 网页设计
  • CAD设计
  • 影音处理
  • 数据库
  • 程序设计
  • 认证考试
  • 信息管理
  • 信息安全
菜单
linkedu.com
  • 网页制作
  • 数据库
  • 程序设计
  • 操作系统
  • CMS教程
  • 游戏攻略
  • 脚本语言
  • 平面设计
  • 软件教程
  • 网络安全
  • 电脑知识
  • 服务器
  • 视频教程
  • JavaScript
  • ASP.NET
  • PHP
  • 正则表达式
  • AJAX
  • JSP
  • ASP
  • Flex
  • XML
  • 编程技巧
  • Android
  • swift
  • C#教程
  • vb
  • vb.net
  • C语言
  • Java
  • Delphi
  • 易语言
  • vc/mfc
  • 嵌入式开发
  • 游戏开发
  • ios
  • 编程问答
  • 汇编语言
  • 微信小程序
  • 数据结构
  • OpenGL
  • 架构设计
  • qt
  • 微信公众号
您的位置:首页 > 程序设计 >C#教程 > C#实现的简单验证码识别实例

C#实现的简单验证码识别实例

作者: 字体:[增加 减小] 来源:互联网 时间:2017-05-28

通过本文主要向大家介绍了c#串口通信实例,c#项目开发实例,c#socket通信实例,c#多线程编程实例,c#窗体应用程序实例等相关知识,希望对您有所帮助,也希望大家支持linkedu.com www.linkedu.com

最近做一个小玩意需要识别验证码,之前从来没有接触过识别验证码这块,这可难倒了我。所以,在网上搜索如何识别验证码,许多前辈写的博文教会了我。怕以后又忘记了,故此写篇随笔记录。

我要识别的验证码是一种非常简单,如图:

识别步骤:

1、图片灰度化(把彩色的验证码图片转换成灰色的图片)、图片二值化
for (int i = 0; i < bmp.Width; i++)
            {
                for (int j = 0; j < bmp.Height; j++)        //双重循环,遍历验证码图片的像素点
                {
                    Color color = bmp.GetPixel(i, j);        //取位图某点颜色
                    int gray = (int)(color.R * 0.3 + color.G * 0.59 + color.B * 0.11);    //灰度化
                    if (gray * 0.2125 + gray * 0.7154 + gray * 0.0721 >= v)      //二值化,v为阈值,大于等于阈值的设为白色,否者设为黑色
                    {
                        bmp.SetPixel(i, j, Color.FromArgb(255, 255, 255));
                    }
                    else
                    {
                        bmp.SetPixel(i, j, Color.FromArgb(0, 0, 0));
                    }
                }
            }
</div>

经过图片灰度化的处理,图片就成这样子:

经过图片二值化的处理,图片就成这样子:

2、图片分割(把四个数字分割出来,保存像素点代码)

把原来的整个验证码图片按照固定的宽、高分割出来(我是按左边距6像素,顶边距4像素,间隔4像素,宽9像素,高12像素分割)。然后取出各个数字图片的像素色,255输出1,其他输出0。就得到108(9*12)个0,1了。
111111111111111000000111100000000001001111111100011111111110001111111100100000000001111000000111111111111111
</div>
保存完所有数字(0-9)的0,1代码之后,以后就直接与这9串0,1模糊匹配(有杂色的可能,所以要模糊匹配),然后就实现了自动识别验证码。

</div>
分享到:QQ空间新浪微博腾讯微博微信百度贴吧QQ好友复制网址打印

您可能想查找下面的文章:

  • C#纹理画刷TextureBrush用法实例
  • C#确保只有一个实例在运行的方法
  • C#选择法排序实例分析
  • C#使用动态规划解决0-1背包问题实例分析
  • C#插入法排序算法实例分析
  • C#中FormsAuthentication用法实例
  • 基于C#实现的多生产者多消费者同步问题实例
  • C#基础之匿名方法实例教程
  • C#实现只运行单个实例应用程序的方法(使用VB.Net的IsSingleInstance)
  • C#实现的简单验证码识别实例

相关文章

  • 2017-05-28解析美国东部时间与北京时间相互转换的实现代码
  • 2017-05-28C# DateTime.ToString根据不同语言生成相应的时间格式
  • 2017-09-04C# 未处理的“System.InvalidOperationException”类型的异常
  • 2017-05-28C#字符串数组转换为整形数组的方法
  • 2017-05-28C#中判断本地系统的网络连接状态的方法
  • 2017-05-28c#获取gridview的值代码分享
  • 2017-05-28C#怎样才能实现窗体最小化到托盘呢?
  • 2017-05-28C#遍历删除字符串中重复字符
  • 2017-05-28C# SendKeys使用方法介绍
  • 2017-05-28C#泛型编程介绍

文章分类

  • JavaScript
  • ASP.NET
  • PHP
  • 正则表达式
  • AJAX
  • JSP
  • ASP
  • Flex
  • XML
  • 编程技巧
  • Android
  • swift
  • C#教程
  • vb
  • vb.net
  • C语言
  • Java
  • Delphi
  • 易语言
  • vc/mfc
  • 嵌入式开发
  • 游戏开发
  • ios
  • 编程问答
  • 汇编语言
  • 微信小程序
  • 数据结构
  • OpenGL
  • 架构设计
  • qt
  • 微信公众号

最近更新的内容

    • automation服务器不能创建对象 解决方法
    • 解决用Aspose.Words,在word文档中创建表格的实现方法
    • WPF字体或内容模糊的解决方法
    • c#中Empty()和DefalutIfEmpty()用法分析
    • C#自动给文章关键字加链接实现代码
    • 总结的5个C#字符串操作方法分享
    • C#遍历得到checkboxlist选中值和设置选中项的代码
    • C#与js实现去除textbox文本框里面重复记录的方法
    • C# 获取枚举值的简单实例
    • C#自定义函数NetxtString生成随机字符串

关于我们 - 联系我们 - 免责声明 - 网站地图

©2020-2025 All Rights Reserved. linkedu.com 版权所有