Kmeans图像聚类python代码
时间: 2023-10-12 15:14:44 浏览: 52
以下是Kmeans图像聚类的Python代码示例:
```
import numpy as np
import matplotlib.pyplot as plt
from sklearn.cluster import KMeans
from PIL import Image
# 加载图像数据
img = Image.open("image.jpg")
img_data = np.array(img)
# 将图像数据转换为二维数组
rows, cols, dims = img_data.shape
X = np.reshape(img_data, (rows*cols, dims))
# 执行 KMeans 操作
kmeans = KMeans(n_clusters=8, random_state=0).fit(X)
labels = kmeans.labels_
centroid = kmeans.cluster_centers_
# 重新构造图像数据
X_compressed = np.zeros((rows*cols, dims))
for i in range(rows*cols):
X_compressed[i,:] = centroid[labels[i],:]
X_compressed = np.reshape(X_compressed, (rows, cols, dims))
# 显示原始图像和压缩后的图像
fig, ax = plt.subplots(1, 2, figsize=(12, 8))
ax[0].imshow(img_data)
ax[0].set_title('Original Image')
ax[0].axis('off')
ax[1].imshow(X_compressed.astype('uint8'))
ax[1].set_title('Compressed Image, K=8')
ax[1].axis('off')
plt.show()
```
该代码使用scikit-learn库的KMeans算法实现了图像的聚类压缩。它将图像数据转换为二维数组,对其执行KMeans聚类,并使用聚类中心重新构造图像数据。最后,它显示了原始图像和压缩后的图像。