1. 应用K-means算法进行图片压缩
读取一张图片
观察图片文件大小,占内存大小,图片数据结构,线性化
用kmeans对图片像素颜色进行聚类
获取每个像素的颜色类别,每个类别的颜色
压缩图片生成:以聚类中收替代原像素颜色,还原为二维
观察压缩图片的文件大小,占内存大小
from matplotlib import pyplot as plt from sklearn.cluster import KMeans import numpy as np import matplotlib.image as img import sys as sys #读取一张图片 观察图片文件大小,占内存大小,图片数据结构,线性化 img = img.imread("data壁纸.jpg") #读取图片 plt.imshow(img) #查看图片 print("图片大小:",img.size) print("占内存大小:",sys.getsizeof(img)) print("图片数据结构:",img) x = img.reshape(-1, 3) #将图片线性化,列数为3 img1 = img[::3, ::3] # 降低分辨率 print(img.shape, img1.shape, x.shape)
运行结果:
# 用kmeans对图片像素颜色进行聚类 colours=64 #(255,255,255) model=KMeans(n_clusters=colours) #构建模型 model.fit(x) #训练模型 x_pre=model.predict(x) #预测 center=model.cluster_centers_ #聚类中心 new_img=center[x_pre].reshape(img.shape)#还原每个像素颜色 plt.imshow(new_img.astype(np.uint8)) # 展示压缩后的图片 plt.show()
运行结果:
2. 观察学习与生活中可以用K均值解决的问题。
从数据-模型训练-测试-预测完整地完成一个应用案例。
这个案例会作为课程成果之一,单独进行评分