skimage學習(一)


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

顯示結果:

 


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM