驗證碼識別之旅 一

2021-07-31 08:31:05 字數 1589 閱讀 1706

當我們拿到乙份驗證碼時,我們首先應該對它進行觀察.

可以看到,它的長和高分別為250和60.不過由於它內容區域的周邊含有許多白色的"無效內容"區域,會對我們進行識別造成干擾,所以第一步,就是應該進行噪音資料的過濾.

即將內容區域提取出來.

這個驗證碼的無效區域為白色,而且是純白,沒有噪音資料,所以rgb會為》=(240,240,240).處理起來就比較容易了.我們只需要分別找出:

那麼即可以得到邊框的(x,y,width,height)數值為(leftx,topy,rightx-leftx+1,bottomy-topy+1).(注:(x,y)為邊框左上角座標)

**如下:

/**

* @param rgb

* @return false非白色,true白色

*/public boolean iswhite(int rgb)

return false;

}/**

** @return 獲取的畫素邊緣

*/public int getborder();

int index = -1;

for(string filepath:filepaths)

這樣我們就可以得到內容區域的,而且大小是大小一致的.

接著,我們需要將它按照5等分進行切割,**如下:

/**

* @return 由於待識別的驗證碼的的數字就為5個,所以可以按照5對於進行切割

*/public bufferedimage divideimage()

}catch(exception ex)

return imgarr;

}

切割後的如下圖所示:

所以可以得到每乙個被切割的灰度值陣列:

/**

* @param rgb

* @return 根據rgb計算灰度值

*/public double getgrayvalue(int rgb)

/*** 得到5張的灰度值陣列

*/public void calgrayarray()catch(exception ex)

}public bufferedimage getbimg()

/*** @param rgb

* @return false非白色,true白色

*/public boolean iswhite(int rgb)

return false;

}/**

** @return 獲取的畫素邊緣

*/public int getborder()

/*** 得到5張的灰度值陣列

*/public void calgrayarray(){

bufferedimage arr = divideimage();

for(int i=0;i唉,自從廢寢忘食的讓驗證碼識別的準確率到了99.1%,就喪失了完成文章的動力。週末補上所有文章。

驗證碼 簡單驗證碼識別

這裡的驗證碼是內容非常簡單的,結構非常清晰的 這裡的驗證碼是內容非常簡單的,結構非常清晰的 這裡的驗證碼是內容非常簡單的,結構非常清晰的 興之所至之所以說簡單,我覺得是這樣的 抽了五張驗證碼扔進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...