[TOC] 這篇博客及之後的系列,我會向大家介紹各種驗證碼的識別。包括普通圖形驗證碼,極驗滑動驗證碼,點觸驗證碼,微博宮格驗證碼。 一.普通圖形驗證碼 之前的博客已向大家介紹了簡單的圖形驗證碼的處理過程,但是會和實際的有所差別,這是因為驗證碼內的多餘線條與圖案干擾了圖片的識別。因此,對於這種情況,需 ...
目錄
這篇博客及之後的系列,我會向大家介紹各種驗證碼的識別。包括普通圖形驗證碼,極驗滑動驗證碼,點觸驗證碼,微博宮格驗證碼。
一.普通圖形驗證碼
之前的博客已向大家介紹了簡單的圖形驗證碼的處理過程,但是會和實際的有所差別,這是因為驗證碼內的多餘線條與圖案干擾了圖片的識別。因此,對於這種情況,需要我們進行一些處理,然後才能識別出正確的結果,下麵是進行處理的方法。
1.灰度處理
可以用Image對象的convert()方法傳入參數L,就可以把圖片轉化為灰度圖像,如下代碼:
img = Image.open('1.jpg')
image = img.convert('L')
image.show()
結果為:
2.二值化處理
可以傳入1進行二值化處理,如下代碼:
img = Image.open('1.jpg')
image = img.convert('1')
image.show()
結果為:
還可以指定二值化的閾值,預設的閾值是127,要指定的話必須要先轉化為灰度圖像,再指定二值化的閾值。代碼如下:
image = Image.open('1.jpg')
# 先轉化為灰度圖片
image = image.convert('L')
threshold = 180 # 設置閾值
my = []
for i in range(256):
if i < threshold:
my.append(0)
else:
my.append(1)
# 二值化處理
image = image.point(my,'1')
image.show()
這裡原來的驗證碼中的線條已經去除,驗證碼變得很清楚。這個時候重新識別驗證碼,結果如下: