kmeans图像压缩

# -*- coding: utf-8 -*-

from skimage import io
from sklearn.cluster import KMeans
import numpy as np

image = io.imread('test2.jpg')
io.imshow(image)
io.show()

rows = image.shape[0]
cols = image.shape[1]
 
# 取出图像每一个点作为样本,取出他的三个通道
image = image.reshape(image.shape[0]*image.shape[1],3)
# 本来0-256个可取的范围,现在压缩成0-128个簇,cpu个数,迭代次数
kmeans = KMeans(n_clusters = 128, n_init=10, max_iter=200)
kmeans.fit(image)

clusters = np.asarray(kmeans.cluster_centers_,dtype=np.uint8) 
labels = np.asarray(kmeans.labels_,dtype=np.uint8 )  
labels = labels.reshape(rows,cols);

print (clusters.shape)
np.save('codebook_test.npy',clusters)    
io.imsave('compressed_test.jpg',labels)

在这里插入图片描述

image = io.imread('compressed_test.jpg')
io.imshow(image)
io.show()

在这里插入图片描述

发布了301 篇原创文章 · 获赞 30 · 访问量 4万+

猜你喜欢

转载自blog.csdn.net/weixin_42260102/article/details/103639681
今日推荐