skimage即是Scikit-Image。基於python腳本語言開發的數字圖片處理包
skimage包由許多的子模塊組成,各個子模塊提供不同的功能。主要子模塊列表如下:

data子模塊學習
導入data模塊
from skimage import color,io
加載data中的圖片
chelsea = data.logo()
io.imshow(chelsea)
結果:
(此圖來自data中的資源圖片)
color子模塊的操作
from skimage import color
logo1 = color.rgb2gray(logo) #將圖片編程灰色
io.imshow(logo1)

filters操作
進行二值化操作
圖像的二值化,就是將圖像上的像素點的灰度值設置為0或255(即0和1),也就是將整個圖像呈現出明顯的只有黑和白的視覺效果。
現將圖片編程灰白的圖片
from skimage import filters
chelsea = data.chelsea() #加載圖片
chelsea1 = color.rgb2gray(chelsea) #將加載的圖片編程灰白的圖片
io.imshow(chelsea) #展示圖片
chelsea.shape # 觀測圖片尺寸
t1 = filters.threshold_otsu(chelsea1) #對灰色圖片進行預直化操作
for i in range(300):
for j in range(451):
if chelsea1[i,j] <=t1: 判斷像素點預直化操作后的值進行對比,
chelsea1[i,j]=0 將小於預直化操作的像素點變成0
else:
chelsea1[i,j]=1 將大於預直化操作的像素點變成1
io.imshow(chelsea1) 顯示二值化操作后的圖片

二值化操作的應用
進行驗證碼的識別

如上圖可以看到上邊驗證碼有噪點,這樣不利於電腦識別,所以使用二值化操作對驗證碼去噪點
code = io.imread("./code.jpg") 加載圖片,將圖片編程灰白圖片
code1 = color.rgb2gray(code)
io.imshow(code)
code1.shape 讀出圖片的大小為(211, 417)
進行二值化操作
c = filters.threshold_otsu(code1) #求出灰白圖片的預值
c
for x in range(211):
for y in range(417):
if code1[x,y]<=c:
code1[x,y]=0
else:
code1[x,y]=1
io.imshow(code1)

如上圖,進行二值化操作后只顯示了三個數字,實際上是第四個數字顏色太淺了,被篩選走了
所以需要給驗證碼種顏色加深。直接對預值進行方法,讓二值化是的篩選條件寬松
for x in range(211):
for y in range(417):
if code1[x,y]<=0.8:
code1[x,y]=0
else:
code1[x,y]=1
顯示結果:

