視頻地址Python機器學習應用算法
圖像分割:利用圖像的灰度、顏色、紋理、形狀等特徵,把圖像分紅若 幹個互不重疊的區域,並使這些特徵在同一區域內呈現類似性,在不一樣的區 域之間存在明顯的差別性。而後就能夠將分割的圖像中具備獨特性質的區域 提取出來用於不一樣的研究。
1.創建工程並導入sklearn包app
2.加載圖片並進行預處理機器學習
3.加載Kmeans聚類算法ide
4.對像素點進行聚類並輸出學習
import numpy as np
import PIL.Image as image
from sklearn.cluster import KMeans
def load_data(file_path):
f = open(file_path,'rb') #二進制打開
data = []
img = image.open(f) #以列表形式返回圖片像素值
m,n = img.size #活的圖片大小
for i in range(m):
for j in range(n): #將每一個像素點RGB顏色處理到0-1範圍內並存放data
x,y,z = img.getpixel((i,j))
data.append([x/256.0,y/256.0,z/256.0])
f.close()
return np.mat(data),m,n #以矩陣型式返回data,圖片大小
img_data,row,col = load_data('1.jpg')
label = KMeans(n_clusters=3).fit_predict(img_data) #聚類中心的個數爲3
label = label.reshape([row,col]) #聚類得到每一個像素所屬的類別
pic_new = image.new("L",(row,col)) #建立一張新的灰度圖保存聚類後的結果
for i in range(row): #根據所屬類別向圖片中添加灰度值
for j in range(col):
pic_new.putpixel((i,j),int(256/(label[i][j]+1)))
pic_new.save('111.jpg')
修改n_clusters的值會有不一樣結果網站
經過設置不一樣的k值,可以獲得不一樣的聚類結果。同時,k值的不肯定也 是Kmeans算法的一個缺點。每每爲了達到好的實驗結果,須要進行屢次嘗 試纔可以選取最優的k值。而像層次聚類的算法,就無需指定k值,只要給 定限制條件,就能自動地獲得類別數k。3d
話說把女友P成這樣會不會被罵code
然而本身想太多視頻