<Win32> 简单规则BMP验证码自动验证
2015-04-17 17:04
246 查看
1. 验证码
验证码是规则的, 如以下:图片大小固定, 每个字符所占宽度固定.
我们可以通过对bmp图片进行去躁, 再二值化, 再和事先使用PS***的模板进行匹配, 最终可以得到验证码.
2. 实现
二值化图片:
CImage image; //使用图片类 image.Load(m_strFilePath); //装载路径下图片信息到图片类 int height = image.GetHeight(); int width = image.GetWidth(); COLORREF pixel; int avg = 0; int r = 0, g = 0, b = 0; ////////////////////////////////////////////////////////////////////////// // 二值化图片 for (int x=0; x < width; x++) { for(int y=0; y < height; y++) { pixel = image.GetPixel(x,y); r = GetRValue(pixel); avg = (r < 220) ? 255 : 0; r = pixel & 0xFF; g = (pixel >> 8) & 0xFF; b = (pixel >> 16) & 0xFF; avg = ((r+g+b) > 500) ? 0 : 255; // 黑色/白色两种 //image.SetPixelRGB(x,y,avg,avg,avg); m_pBuffer[x][y] = avg; } }
去躁:
去除孤立的点, 和贯穿长度超过范围的横线和纵线匹配:
二值情况下与模板进行整体重合度的匹配和字母部分重合度的匹配,获取最高的,一般没有误差。操作说明:
另:工程中还有BMP图片旋转、缩放等操作的函数,可一并参考
工程下载地址:AutoVercode
相关文章推荐
- Android实战简易教程<三十九>(第三方短信验证平台Mob和验证码自动填入功能结合实例)
- KindEditor 怎么解决复制内容的时候自动添加的<pre>标签
- <Win32> GDI+跑马灯滚动字幕
- <OJ_Sicily>1152简单的马周游问题
- Qt5.6 用SQLite数据库验证做登录框,并查删改xml文件做记住密码和自动登录<三>
- <c:forEach>遍历标签自动生成序号…
- JavaScript中list的简单使用<菜单>
- <十一>TabLayout简单例子
- <Win32> VS新建DLL工程
- <备份>9月19日简单总结
- <Java Web学习初级阶段>表格实现简单的注册页面
- <Java Web学习初级阶段>JavaScript实现注册页面的表单验证
- <细节>写个简单的函数,用于判断CPU的字节序(little endian/big endian)
- Java基础加强<二>可变参数、增强for循环、基本类型的自动拆箱与装箱、枚举
- <转>人名翻译规则
- <Win32> 使用钩子仿照Spy++截取消息
- <项目开发>简单的题库管理系统
- <copy>Log4j日志管理系统简单使用说明
- 去除CKEditor自动添加的<p></p>标签的方法, 有两种办法:
- <一>读<<大话设计模式>>之简单工厂模式