作业九
##导包 from sklearn.datasets import load_sample_image from sklearn.cluster import KMeans import matplotlib.pyplot as plt import numpy as np import matplotlib.image as img import sys ##读取一张示例图片或自己准备的图片,观察图片存放数据特点。 china = load_sample_image('china.jpg') plt.show(china) plt.show() ##降低分辨率 image = china[::3, ::3] X = image.reshape(-1, 3) print(china.shape, image.shape, X.shape) #k均值作为聚类,将图片的所有颜色进行聚类 n_colors = 64 #聚类中心分为64个点 model = KMeans(n_colors) #model作为聚类 labels = model.fit_predict(X) # 每个点的颜色分类 0-63 colors = model.cluster_centers_#将64个聚类中心赋给color new_image = colors[labels] new_image = new_image.reshape(image.shape) ##转换维度,类型转化 new_image plt.imshow(image) plt.show() plt.imshow(new_image.astype(np.uint8))##此处使用uint8格式的数据类型,gss将其转化为uint16是考虑到超出255的范围会出错,在结束后将其转化为原先的uint8类型 plt.show() ##获取图片的大小 s1 = print(sys.getsizeof(china)) s2 = print(sys.getsizeof(new_image)) print(X.shape) print(labels.shape, labels) print(colors.shape, colors) ##将图片存到指定位置。 img.imsave("D:\\china.jpg",china) img.imsave("D:\\china_zip.jpg",new_image)