11.12

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

#1、读取图片
import matplotlib.image as img
dg = img.imread("D:\\tu.jpg")
plt.imshow(dg)
plt.show()
print(dg.shape)

#2、降低分辨率
image = dg[::3, ::3] #降低图片3倍分辨率
plt.imshow(dg)
plt.show()

#3、用k均值聚类算法,将图片中所有的颜色值做聚类
X = image.reshape(-1,3)   # 重造数组n_colors= 64  #(256,256,256)
n_colors=64
model= KMeans(n_colors)
labels = model.fit_predict(X)    #每个点的颜色分类,0-63
colors = model.cluster_centers_   #64个聚类中心,颜色值
print(dg.shape,image.shape,X.shape)
#聚类
new_lms = colors[labels]
# 4.还原成原来的维度并转换数据类型
new_lms = new_lms.reshape(image.shape)
plt.imshow(new_lms.astype(np.uint8))
plt.show()
plt.imshow(image)
plt.show()
#5、保存图片
plt.imsave('d:\\dg.jpg',dg)
plt.imsave('d:\\image.jpg',image)
import sys
#6. 压缩前后对比
size1 = sys.getsizeof('d:\\dg.jpg')
size2 = sys.getsizeof('d:\\image.jpg')
print('压缩前:'+str(size1),"\t压缩后:"+str(size2))

猜你喜欢

转载自www.cnblogs.com/zhanglk/p/9945550.html