https://gitee.com/chending006/yanzhengmahttps://gitee.com/chending006/yanzhengma

一、课题介绍

随着互联网技术的发展和应用,网络在给人们提供丰富资源和极大便利的同时,伴随而来的是互联网系统的安全性问题。而数字验证码的出现证书加强web系统安全性的产物。研究数字验证码的识别显得非常有必要。

本设计基于MATLAB hu不变矩,进行数字验证码的识别,建立一个模板库,采用GUI设计界面,自由读取数字验证码进行识别并且输出0-9这10个数字。

二、GUI界面设计

三、运行截图

四、源码
1、打开图像
file = fullfile(pwd, 'test/下载.jpg');
[Filename, Pathname] = uigetfile({'*.jpg;*.tif;*.png;*.gif','All Image Files';...'*.*','All Files' }, '载入验证码图像',...file);
if isequal(Filename, 0) || isequal(Pathname, 0)return;
end
% 显示图像
axes(handles.axes1); cla reset;
axes(handles.axes2); cla reset;
set(handles.axes1, 'Box', 'on', 'Color', 'c', 'XTickLabel', '', 'YTickLabel', '');
set(handles.axes2, 'Box', 'on', 'Color', 'c', 'XTickLabel', '', 'YTickLabel', '');
set(handles.axes3, 'Box', 'on', 'Color', 'c', 'XTickLabel', '', 'YTickLabel', '');
set(handles.axes4, 'Box', 'on', 'Color', 'c', 'XTickLabel', '', 'YTickLabel', '');%set(handles.text4, 'String', '');
% 存储
fileurl = fullfile(Pathname,Filename);
Img = imread(fileurl);
imshow(Img, [], 'Parent', handles.axes1);
title('原图')2、去噪
% 颜色空间转换
hsv = rgb2hsv(Img);
h = hsv(:, :, 1);
s = hsv(:, :, 2);
v = hsv(:, :, 3);bw1 = h > 0.16 & h < 0.30;
bw2 = s > 0.65 & s < 0.80;
bw = bw1 & bw2;3、定位
while s1 < sz(2)for i = s1 : sz(2)% 移动游标s2 = i;if cs(s2) < tol && flag == 1% 达到起始位置flag = 2;S1 = [S1 s2-1];break;elseif cs(s2) >= tol && flag == 2% 达到结束位置flag = 1;E1 = [E1 s2];break;endends1 = s2 + 1;
end4、分割
% 加入红色边框
Ti = handles.Ti;
It = [];
spcr = ones(size(Ti{1}, 1), 3)*255;
spcg = ones(size(Ti{1}, 1), 3)*0;
spcb = ones(size(Ti{1}, 1), 3)*0;
spc = cat(3, spcr, spcg, spcb);
% 整合到一起
length(Ti)
It = [It spc];
for i = 1 : length(Ti)ti = Ti{i};    ti = cat(3, ti, ti, ti);   ti = im2uint8(mat2gray(ti));axes(handles.(sprintf('axes%d', i+4)));imshow(ti)It = [It ti spc];end
imshow(It, [], 'Parent', handles.axes4); hold on;
5、识别
% 比对识别
fileList = GetAllFiles(fullfile(pwd, 'Databse'));%GetALLFiles.m这个是子函数,到文件夹对应看这个代码
Tj = [];
for i = 1 : length(fileList)%filenamei = fileList{i};[pathstr, name, ext] = fileparts(filenamei);if isequal(ext, '.jpg')ti = imread(filenamei);ti = im2bw(ti, 0.5);ti = double(ti);% 提取不变矩特征数据phii = invmoments(ti);%invmoments.m% 开始比对OTj = [];for j = 1 : length(Ti)tij = double(Ti{j});phij = invmoments(tij);ad = norm(phii-phij);%不变矩对比做差otij.filename = filenamei;otij.ad = ad;OTj = [OTj otij];endTj = [Tj; OTj];end
end
% 生成结果
r = [];
for i = 1 : size(Tj, 2)ti = Tj(:, i);adi = cat(1, ti.ad);[minadi, ind] = min(adi);filenamei = ti(ind).filename;[pathstr, name, ext] = fileparts(filenamei);name = name(1);r = [r name];
end
set(handles.text11, 'String', r);

Matlab验证码识别相关推荐

  1. 【Matlab验证码识别】遗传算法和最大熵优化+大津法(OTSU)+自定义阈值数字验证码识别【含GUI源码 1694期】

    一.代码运行视频(哔哩哔哩) [Matlab验证码识别]遗传算法和最大熵优化+大津法(OTSU)+自定义阈值数字验证码识别[含GUI源码 1694期] 二.matlab版本及参考文献 1 matlab ...

  2. 验证码识别 matlab,MATLAB数字验证码识别

    文件名大小更新时间 MATLAB数字验证码识别[GUI,详细解析,论wen]02020-08-03 MATLAB数字验证码识别[GUI,详细解析,论wen]\Databse02020-08-01 MA ...

  3. MATLAB简易验证码识别程序介绍

    本推文主要识别的验证码是这种: 第一步: 二值化 所谓二值化就是把不需要的信息通通去除,比如背景,干扰线,干扰像素等等,只剩下需要识别的文字,让图片变成2进制点阵. 第二步: 文字分割 为了能识别出字 ...

  4. matlab识别验证码详解,MATLAB简易验证码识别程序介绍

    谢谢大家的支持!现在该公众号开通了评论留言功能,你们对每篇推文的留言与问题,可以通过[写评论]给圈主留言,圈主会及时回复您的留言. 查看之前文章请点击右上角,关注并且查看历史消息,谢谢您的支持! 本推 ...

  5. 基于MATLAB的验证码识别

    摘要:验证码是各大网站用以防范计算机自动程序恶意攻击的手段之一.通过使用数字图像处理中的图片分割.开闭运算等手段,能够识别绝大部分网站的验证码.对验证码识别技术的研究,既能及早发现验证码的漏洞,也能对 ...

  6. matlab车牌识别课程设计,matlab车牌识别课程设计报告模板(附源代码).doc

    您所在位置:网站首页 > 海量文档 &nbsp>&nbsp计算机&nbsp>&nbspmatlab matlab车牌识别课程设计报告模板(附源代码). ...

  7. caffe训练验证码识别

    跟着参考博客,把数据集的准备和制作.深度网络模型的设计.训练和测试的流程走一遍. 博主是用深度学习做多任务分类的思路来识别验证码.多任务学习是针对数据给出多个监督信息(标签)进行学习,例如识别一张图像 ...

  8. 深度学习caffe实战(一)验证码识别

    狭义上讲验证码识别是将验证码图像转化成字符串值,传统方法常常先对验证码图像进行字符分割,再对验证码进行识别,劣势在于字符分割方法往往针对不同风格的验证码需要做修改,某些验证码加入噪声或线条,字符位置不 ...

  9. deep learning 淘宝验证码识别

    2014年底验证码识别称为一个热门的话题,各种12306抢票软件层出不穷,百度,搜狗,360等公司推出了火车票抢票软件.在给人们带来便利的同时,当然给黄牛有了可乘之机.下面介绍几种我们常见的验证码. ...

最新文章

  1. MVC与MVVM框架
  2. ISAPI_Rewrite规则
  3. Java高级篇(二)——网络通信
  4. bcb6通过https接口post数据_Python+Requests+Pytest+YAML+Allure实现接口自动化
  5. ReentrantLock实现原理
  6. 如何在SQL Server Management Studio中创建和配置链接服务器以连接到MySQL
  7. vue 父链和子组件索引_解决Vue2.x父组件与子组件之间的双向绑定问题
  8. Noip2013花匠
  9. 如何下载msdn上面的操作系统镜像
  10. kali之msfconsole
  11. zk集群和clickhouse集群搭建
  12. Python查询四六级成绩
  13. 黑马程序员Netty全套教程,全网最全Netty深入浅出教程,Java网络编程的王者
  14. 11月13日科技资讯|天猫回应“双11数据造假”:已启动司法流程;小米折叠手机专利曝光;ASP.NET感染勒索软件|极客头条
  15. java十大经典排序
  16. IPQ8072A 如何通过AT指令跟SDX55交互
  17. 关于“C2248 QString::QString 无法访问private成员的问题”
  18. python离散积分_python 计算离散点的微分和积分(超详细)
  19. 白告王旋的前端开发笔记——Node
  20. 低功耗蓝牙(BLE)-- advertisements广播篇

热门文章

  1. 介绍几种初学者学习电脑入门知识的方法
  2. 使用Session+Cookie实现7天免登录
  3. 面向接口编程VS《倚天屠龙记》里张三丰教无忌打太极
  4. 图片怎么转为html格式,ps图片怎么转换为html ps图片转换为html图文教程
  5. 名称、系统服务-windows系统进程解析 -by小雨
  6. linux_C_fork函数/execv/execl的使用_数据类型pid_t/getpid/sleep /warning: missing sentinel in function call
  7. 深度搜索—-深度搜索解决矩阵搜索问题(水洼数计算)
  8. 人工智能和5G在无人机技术中的作用
  9. 计算机应用开班培训简报,信息技术提升培训简报及总结.doc
  10. 嵌入式linux学习路径--新手入门篇