驗證碼識別過程好比人大腦的乙個識別過程 。
首先,我們的眼睛接收,並將這張的資訊輸送給大腦;
然後,我們的大腦接收到這個資訊以後,對這個資訊作出處理;
最後,將中的有效資訊提取出來再將其和大腦中儲存的資訊進行對應對比,確定對比結果。
模擬驗證碼識別,大腦接受的處理過程就相當於電腦對的預處理,大腦對進行對比和確定結果就相當於電腦對驗證碼進行的識別。
1.驗證碼獲取
clc; clear all; close all;
% 設定資料庫檔案路徑
foldername = fullfile(pwd, 'database');
if ~exist(foldername, 'dir');
mkdir(foldername);
end% 採集數目
% 獲取指定的驗證碼
img = get_yzm(seed);
imwrite(img, filenamei);
end
2.建立標準字元庫
clc; clear all; close all;
% 設定生成路徑
foldername_out = fullfile(pwd, 'model_out');
if ~exist(foldername_out, 'dir');
mkdir(foldername_out);
end% 上下左右有效區域
th = [3 17 5 56];
for k = 1 : 6
% 讀取模型
% 顏色分割
hsv = rgb2hsv(img);
i = hsv(:,:,3);
i = im2uint8(mat2gray(i));
% 反色
i = imcomplement(i);
% 閾值分割
thresh = graythresh(i);
if thresh < 0.4
thresh = 0.5;
end% 二值化
bw = im2bw(i, thresh);
% 去除小的雜點
bw = bwareaopen(bw, 7);
% 區域分割(把驗證碼之外的區域去除)
bw(1:th(1), :) = 0;
bw(th(2):end, :) = 0;
bw(:, 1:th(3)) = 0;
bw(:, th(4):end) = 0;
% 區域標記
[l, num] = bwlabel(bw);
% 區域分割
stats = regionprops(l);
for i = 1 : num
% 分別提取
rect = stats(i).boundingbox;
bwi = bw;
bwi(l ~= i) = 0;
% 裁剪出字元
bwi = imcrop(bwi, rect);
% 寫出
3.驗證碼識別
clc; clear all; close all;
% 載入模板
% 二值化
bw = im2bw(bw);
[ri, ci] = find(bw);
%驗證碼定位與裁剪
recti = [min(ci) min(ri) max(ci)-min(ci) max(ri)-min(ri)];
bw = imcrop(bw, recti);
% 提取特徵用於識別(自定義函式)
phi = featureextract(bw);
% 提取第乙個字元作為標識
img = get_yzm();
% 影象分割
th = [3 17 5 56];
hsv = rgb2hsv(img);
i = hsv(:,:,3);
i = im2uint8(mat2gray(i));
i = imcomplement(i);
thresh = graythresh(i);
if thresh < 0.4
thresh = 0.5;
endbw = im2bw(i, thresh);
bw = bwareaopen(bw, 7);
bw(1:th(1), :) = 0;
bw(th(2):end, :) = 0;
bw(:, 1:th(3)) = 0;
bw(:, th(4):end) = 0;
%區域標記與分割
[l, num] = bwlabel(bw);
stats = regionprops(l);
result = ;
for i = 1 : num
rect = stats(i).boundingbox;
bwi = bw;
bwi(l ~= i) = 0;
bwi = imcrop(bwi, rect);
[ri, ci] = find(bwi);
recti = [min(ci) min(ri) max(ci)-min(ci) max(ri)-min(ri)];
bwi = imcrop(bwi, recti);
phi = featureextract(bwi);
for j = 1 : length(words)
dis(j) = norm(phi - words(j).phi);
end[~, ind_min_dis] = min(dis);
result = [result words(ind_min_dis).char];
endfigure('color', 'w');
subplot(2, 1, 1); imshow(img, ); title('驗證碼影象');
subplot(2, 1, 2); imshow(bw, ); title(result, 'fontweight', 'bold', 'fontsize', 16, 'color', 'r');
驗證碼 簡單驗證碼識別
這裡的驗證碼是內容非常簡單的,結構非常清晰的 這裡的驗證碼是內容非常簡單的,結構非常清晰的 這裡的驗證碼是內容非常簡單的,結構非常清晰的 興之所至之所以說簡單,我覺得是這樣的 抽了五張驗證碼扔進ps,50 透明度,長這樣 只有數字為內容 每張圖的數字都在固定位置 沒有太大的干擾因素 數字字型,形態完...
驗證碼識別
import tensorflow as tf 定義乙個初始化權重的函式 def weight variables shape w tf.variable tf.random normal shape shape,mean 0.0,stddev 1.0 return w 定義乙個初始化偏置的函式 d...
CSDN驗證碼識別
獲取影象部分 private stream geturl ref string str private string getnumber 驗證碼識別部分 public class csdn public string readmap bitmap image private int readmap ...