作业九

##导包
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)

猜你喜欢

转载自www.cnblogs.com/tangpaiq-/p/9888202.html
今日推荐