图像处理kmeans代码
时间: 2023-11-04 12:05:03 浏览: 59
下面是一个简单的 Python 代码示例,使用 scikit-learn 库中的 KMeans 算法实现图像分割(图像压缩):
```python
from sklearn.cluster import KMeans
from PIL import Image
import numpy as np
# 读取图像
img = Image.open('image.jpg')
# 将图像转为 numpy 数组
img_array = np.array(img)
# 获取图像的形状
h, w, d = img_array.shape
# 将图像数组变为二维数组
img_data = img_array.reshape(h * w, d)
# 设置 KMeans 的参数
k = 16 # 聚类数
n_init = 10 # 初始化次数
max_iter = 300 # 最大迭代次数
# 创建 KMeans 模型
kmeans = KMeans(n_clusters=k, n_init=n_init, max_iter=max_iter)
# 训练模型
kmeans.fit(img_data)
# 获取聚类中心
centers = kmeans.cluster_centers_
# 将每个像素点分类到对应的聚类中心
labels = kmeans.labels_
# 将每个像素点的颜色替换为对应的聚类中心的颜色
compressed_img_data = np.array([centers[labels[i]] for i in range(len(labels))])
# 将压缩后的图像数据转为图像
compressed_img = Image.fromarray(compressed_img_data.reshape(h, w, d).astype(np.uint8))
# 保存压缩后的图像
compressed_img.save('compressed_image.jpg')
```
这段代码将一个名为 image.jpg 的图像进行 KMeans 聚类,将图像压缩成仅使用 16 种颜色的图像,并保存为 compressed_image.jpg。你可以根据需要修改聚类数、初始化次数、最大迭代次数等参数。
阅读全文