當我們拿到乙份驗證碼時,我們首先應該對它進行觀察.
可以看到,它的長和高分別為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...