上回書說道,我們對銀行卡進行了一系列的預處理後,得到了下面的結果:
銀行卡下半部分嚴重影響到了檢測的效果,所以在進行機器學習前,我們還需要做一點處理,把下半部分的雜訊給消除掉。
思路:首先,針對農行卡顏色的特點(目前暫時只討論農行卡)上半部分顏色相對較淺,下半部分顏色較深,而銀行卡號屬深色,所以往往會出現上圖所示的---
下半部分大面積雜訊,上半部分可能沒有或者有細微的少量雜訊的現象,故該圖具有一定的普遍性。
如上圖所示,實際上有效的檢測區域就是上圖紅線之間的數字部分,其餘部分均無效,於是乎,我們可以這樣實現:
遍歷整張二值圖,統計每行的有效畫素(黑色),若該行有效畫素個數高於閾值則表示該行開始是有效區域,若該行有效畫素個數低於閾值則表示該行無影象或者是雜訊;檢測到有效區域後開始,即找到了上面那條紅線後,我們開始找下面那條紅線的位置,若該行有效畫素個數低於閾值,則表示檢測到了無效區域,即檢測到了下面的紅線------
如此一來我們便得到了有效區域的高度,我們將所有的無效區域清除即可。
關鍵**實現:
iplimage
*filter(
iplimage
*imgsrc)
if(state == 0)
//還未到有效行
}else
if(state == 1)
} }
for(int
y = 0; y
imgsrc
->height; y++)
}return
imgsrc;
}
結果:
預處理到此完畢
機器學習下回分解。
openCV銀行卡號識別
銀行卡的識別與車牌識別都是類似的,有了opencv方便了很多,許多函式都不要自己動手去寫。include stdafx.h include cv.h include highgui.h include cxcore.h int main int argc,char argv int tempcoun...
關於銀行卡號識別
絕大部分的銀行卡號遵循luhn演算法,luhn演算法簡述如下 luhn是著名的校驗和演算法也叫模10演算法,主要應用於解決銀行卡號,社保號等重要資訊傳輸出錯問題。先來解釋下演算法原理,校驗和型別的演算法,一般是id 校驗號,校驗號和id號的每位相關,如果出錯,通過某種運算能檢測出這種改動。借用維基百...
vue js銀行卡號處理
1 在專案中新建utils.js檔案 2 寫入 保留前後四位 中間每4個 會有乙個空格 6212 0222 param 傳入資料 const bankcard value g,1 return value 只顯示後四位 0222 param 傳入資料 const onlyfourbank value...