首页 > 其他 > 详细

第九次作业

时间:2018-11-01 20:47:35      阅读:304      评论:0      收藏:0      [点我收藏+]

利用KMeans进行图片的压缩:

代码:

from sklearn.datasets import load_sample_image
from matplotlib import pyplot as plt
from sklearn.cluster import KMeans
import numpy as np

china = load_sample_image(china.jpg)
plt.imshow(china)
plt.show()

# mtaplotlib加载图片
import matplotlib.image as img
import matplotlib.pylab as plt
#myimg = img.imread(r‘images\menghuan.jpg‘)
myimg = load_sample_image(china.jpg)
plt.imshow(myimg)
plt.show()

# 若只取图片的颜色列,会导致图片失真
myimgs = myimg[:,:,0]
plt.imshow(myimgs)
plt.show()

# 缩小分辨率
myimgs2 = myimg[::3,::3]
plt.imshow(myimgs2)
plt.show()

# 重造数组
myimgs2des = myimgs2.reshape(-1,3)


# 聚类
est = KMeans(n_clusters=64)
model = est.fit(myimgs2des)

# 拿到中心和每个元素对应的类别
colors = model.cluster_centers_
labels = model.predict(myimgs2des)

# 进行颜色填充(利用nympy的数组的数据结构)
# 以colors作为主体,labels作为下标,每个元素都替换成相应类别对应的中心值
new_images = colors[labels]

# 还原成原来的维度并转换数据类型
new_images = new_images.reshape(myimgs2.shape)
new_images = new_images.astype(np.uint8)

# 并画图
plt.imshow(new_images)
plt.show()

# 存成文件
plt.imsave(images/china.jpg,myimg)
plt.imsave(images/chinasmall.jpg,new_images)

# 对比
size1 = sys.getsizeof(images/china.jpg)
size2 = sys.getsizeof(images/chinasmall.jpg)
print(压缩前:+str(size1),"\t压缩后:"+str(size2))

 

截图:

技术分享图片

技术分享图片

 

贝叶斯解题过程照片:

技术分享图片

第九次作业

原文:https://www.cnblogs.com/traces2018/p/9892330.html

(0)
(0)
   
举报
评论 一句话评论(0
关于我们 - 联系我们 - 留言反馈 - 联系我们:wmxa8@hotmail.com
© 2014 bubuko.com 版权所有
打开技术之扣,分享程序人生!