被记住的永远是疯子!
import scipy.misc as sm
import sklearn.cluster as sc
import matplotlib.pyplot as mp
# 读取图片
img = sm.imread('../../data/flower.jpg',True)
# 针对img 基于kmeans实现图像量化
# 将x处理成array形式
x = img.reshape(-1,1)
# 构建K-means模型
model = sc.KMeans(n_clusters=4)
# 训练模型
model.fit(x)
label = model.labels_ # 每个样本的标签
# 获取聚类中心,并将其铺平
centers = model.cluster_centers_.ravel()
print(centers) # 查看centers的结构
# 生成新图片,将每个样本标签按每个聚类中心赋值,并转换成与img同维度
newimg = centers[label].reshape(img.shape)
#绘制图形
mp.figure('Quant',facecolor='lightgray')
mp.subplot(121)
mp.axis('off')# 关闭坐标系
mp.imshow(img,cmap='gray')
mp.subplot(122)
mp.axis('off')# 关闭坐标系
mp.imshow(newimg,cmap='gray')
mp.tight_layout()
mp.show()
图形结果:
左图为原图,右图为K-means聚类量化后的图形,便于存储。