对图片的像素进行KMeans聚类代码
时间: 2024-02-06 21:09:14 浏览: 21
以下是使用sklearn库进行KMeans聚类的示例代码:
```
import numpy as np
import matplotlib.pyplot as plt
from sklearn.cluster import KMeans
from sklearn.utils import shuffle
# 读取图片
img = plt.imread('image.jpg')
# 将图片像素转化为二维数组
w, h, d = tuple(img.shape)
image_array = np.reshape(img, (w * h, d))
# 对像素进行随机重排
image_array_sample = shuffle(image_array, random_state=0)[:1000]
# 使用KMeans聚类
k_means = KMeans(n_clusters=8)
k_means.fit(image_array_sample)
k_colors = k_means.predict(image_array)
# 将聚类结果重新转化为图片形式
k_image = np.zeros((w, h, d))
for i in range(w):
for j in range(h):
k_image[i][j] = k_means.cluster_centers_[k_colors[i * h + j]]
# 显示原图片和聚类后的图片
fig, ax = plt.subplots(1, 2, figsize=(12, 6))
ax[0].imshow(img)
ax[0].set_title('Original Image')
ax[1].imshow(k_image)
ax[1].set_title('KMeans Clustering')
plt.show()
```
这段代码会将图片像素随机重排,然后使用KMeans聚类算法对随机重排后的像素进行聚类。最后,将聚类结果重新转化为图片形式并展示出来。这里使用了8个聚类中心,你可以根据自己的需要进行调整。