使用Python以及工具包進行簡單的驗證碼識別,直接開始。
原始圖像
Step 1 打開圖像吧。
im = Image.open('temp1.jpg')
Step 2 把彩色圖像轉化為灰度圖像。彩色圖像轉化為灰度圖像的方法很多,這裡采用RBG轉化到HSI彩色空間,采用I分量。
imgry = im.convert('L')
灰度看起來是這樣的
Step 3 需要把圖像中的噪聲去除掉。這裡的圖像比較簡單,直接阈值化就行了。我們把大於阈值threshold的像素置為1,其他的置為0。對此,先生成一張查找表,映射過程讓庫函數幫我們做。
threshold = 140
table = []
for i in range(256):
if i < threshold:
table.append(0)
else:
table.append(1)
阈值為什麼是140呢?試出來的,或者參考直方圖。
映射過程為
out = imgry.point(table,'1')
此時圖像看起來是這樣的
Step 4 把圖片中的字符轉化為文本。采用pytesser 中的image_to_string函數
text = image_to_string(out)
Step 5 優化。根據觀察,驗證碼中只有數字,並且上面的文字識別程序經常把8識別為S。因此,對於識別結果,在進行一些替換操作。 #由於都是數字**************************************************************
下載在Linux公社的1號FTP服務器裡,下載地址:
FTP地址:ftp://www.linuxidc.com
用戶名:www.linuxidc.com
密碼:www.muu.cc
在 2013年LinuxIDC.com\1月\使用Python以及工具包進行簡單的驗證碼識別
下載方法見 http://www.linuxidc.net/thread-1187-1-1.html
**************************************************************