2019-07-31机器学习无监督学习之聚类 K-Means算法实例 (图像分割)
Posted ymzm204
tags:
篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了2019-07-31机器学习无监督学习之聚类 K-Means算法实例 (图像分割)相关的知识,希望对你有一定的参考价值。
样本:
代码:
import numpy as np import PIL.Image as image from sklearn.cluster import KMeans def loadData(filePath): f = open(filePath, ‘rb‘) #二进制形式打开文件 data = [] img = image.open(f) m, n = img.size #获取图片的大小 for i in range(m): #将每个像素点RGB颜色处理到0-1 for j in range(n): x, y, z = img.getpixel((i, j)) #黑色为0,0,0 有颜色就好像是其他数字 #print(x, y, z) data.append([x/256.0, y/256.0, z/256.0]) #二维列表[0.0, 0.0, 0.0] f.close() #print(data) return np.mat(data), m, n #以矩阵形式返回data,以及图片大小 imgData, row, col = loadData(‘D:/python_source/Machine_study/mooc课程数据/课程数据/基于聚类的整图分割/bull.jpg‘) #print(imgData, row, col) label = KMeans(n_clusters=4).fit_predict(imgData) #聚类获得每个像素所属的类别 label = label.reshape([row, col]) #二维列表 #print(label) pic_new = image.new("L", (row, col)) #创建一张新的灰度图保存聚类后的效果 for i in range(row): #i,j为图片像素,例如 640*480. 根据所属类别向图片中添加灰度值 for j in range(col): pic_new.putpixel((i, j), int(256/(label[i][j]+1))) pic_new.save("result-bull-4.jpg", "JPEG")
效果图:
以上是关于2019-07-31机器学习无监督学习之聚类 K-Means算法实例 (图像分割)的主要内容,如果未能解决你的问题,请参考以下文章