## pip install numpy
## pip install matplotlib
## pip install sklearn
import os
import matplotlib.image as mpimg
import matplotlib
from sklearn.cluster import KMeans
import numpy as np
# 给定图像压缩后颜色的数量
N = [2, 8, 16]
# 给定输入文件
input_file = os.path.join(os.getcwd(), "madagascar.jpg")
# 得到输入文件所在文件夹
input_dir = os.path.dirname(input_file)
# 得到输入文件的文件名(供输出使用)
input_fn = os.path.splitext(os.path.basename(input_file))[0]
# 读入图像,得到RGB通道图像矩阵
img = mpimg.imread(input_file)
# 将图像矩阵转换成 像素xRGB通道的 二维矩阵(pixel x color)
img2D = np.reshape(img, newshape=[-1, 3])
# 对每个颜色通道做一个循环
for n in N:
# 初始化KMeans参数
km = KMeans(n_clusters=n)
# 对像素进行聚类,特征为RGB通道
km.fit(img2D)
# 得到n个聚类中心(RGB颜色)
img_cmap = np.asarray(km.cluster_centers_, np.float32)
# 得到每个像素所在的聚类中心标签
labels_reshape = np.asarray(np.reshape(km.labels_, np.shape(img)[0:2]), np.uint8)
# 定义输出文件的文件名
output_file = os.path.join(input_dir, input_fn + "_%03dcolor.png" % n)
# 将聚类中心转换成图像的颜色索引表
my_cmap = matplotlib.colors.ListedColormap(img_cmap / 255.)
# 保存压缩后的图像
mpimg.imsave(output_file, labels_reshape, cmap=my_cmap)
没有合适的资源?快使用搜索试试~ 我知道了~
资源推荐
资源详情
资源评论
收起资源包目录
img_compression.zip (5个子文件)
madagascar.jpg 81KB
madagascar_008color.png 50KB
madagascar_016color.png 77KB
img_compression.py 1KB
madagascar_002color.png 11KB
共 5 条
- 1
资源评论
吃橘子狂魔
- 粉丝: 0
- 资源: 1
上传资源 快速赚钱
- 我的内容管理 展开
- 我的资源 快来上传第一个资源
- 我的收益 登录查看自己的收益
- 我的积分 登录查看自己的积分
- 我的C币 登录后查看C币余额
- 我的收藏
- 我的下载
- 下载帮助
安全验证
文档复制为VIP权益,开通VIP直接复制
信息提交成功