课题题目:MATLAB数字验证码识别系统二、课题介绍

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

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

三、GUI界面设计

2、源码

  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

  1. 去噪

% 颜色空间转换

hsv = rgb2hsv(Img);

h = hsv(:, :, 1);

s = hsv(:, :, 2);

v = hsv(:, :, 3);

title('去噪结果图')

  1. 定位

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;

        end

    end

    s1 = s2 + 1;

end

  1. 分割

% 加入红色边框

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);

imshow(It, [], 'Parent', handles.axes4); hold on;

  1. 识别

% 比对识别

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);        

        Tj = [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);

  • 19
    点赞
  • 13
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值