码迷,mamicode.com
首页 > 编程语言 > 详细

4.K均值算法--应用

时间:2020-04-18 18:43:26      阅读:80      评论:0      收藏:0      [点我收藏+]

标签:sim   line   from   get   top   生成   标题   tle   ati   

1. 应用K-means算法进行图片压缩

 

一开始我是看直播回放把老师的代码放进去尝试运行,然后发现出现了一些问题,在百度后得到解决。

关于PIL的缺失的解决办法

https://blog.csdn.net/jacabe/article/details/80040338

然后在进行自己的图片压缩时,想给图片加标题,发现中文无法显示

关于标题中文显示乱码的问题

https://blog.csdn.net/weixin_45092662/article/details/102477032

 

以下为源代码:

import matplotlib.pyplot as plt
import matplotlib.image as ig
import numpy as np
import sys
from sklearn.cluster import KMeans


# 读取一张图片
pd = ig.imread(C:/Users/86186/Desktop/大三下/机器学习/pd.jpg)

# 观察图片文件大小,占内存大小,图片数据结构,线性化

print("原图片的文件大小", pd.size)
print("原图片的内存大小", sys.getsizeof(pd))


# 用kmeans对图片像素颜色进行聚类
# 获取每个像素的颜色类别,每个类别的颜色
# 压缩图片生成:以聚类中收替代原像素颜色,还原为二维
X = pd.reshape(-1, 3)  # 把二维的变成线性的
n_colors = 64  # 将图片分成64种颜色
model = KMeans(n_colors)  # 构建模型
labels = model.fit_predict(X)
colors = model.cluster_centers_  # 聚类中心


# 观察压缩图片的文件大小,占内存大小
# 解决中文显示问题
plt.rcParams[font.sans-serif] = [SimHei]
plt.rcParams[axes.unicode_minus] = False

new_image = colors[labels].reshape(pd.shape)
plt.imshow(pd)
plt.title("原图片")
plt.show()

plt.title("最终压缩后的图片")
plt.imshow(new_image.astype(np.uint8)[::3, ::3])
plt.show()

print("最终压缩的图片的文件大小", new_image.size)
print("最终压缩的图片的内存大小", sys.getsizeof(new_image))

结果如下:

技术图片

 

 技术图片

 

 技术图片

 

 

2. 观察学习与生活中可以用K均值解决的问题。

 

4.K均值算法--应用

标签:sim   line   from   get   top   生成   标题   tle   ati   

原文地址:https://www.cnblogs.com/fzybk/p/12727266.html

(0)
(0)
   
举报
评论 一句话评论(0
登录后才能评论!
© 2014 mamicode.com 版权所有  联系我们:gaon5@hotmail.com
迷上了代码!