k-means图片聚类代码
时间: 2023-10-23 08:08:48 浏览: 85
以下是一个使用Python实现k-means图片聚类的示例代码:
```python
import numpy as np
import cv2
from sklearn.cluster import KMeans
# 加载图像
img = cv2.imread('image.jpg')
# 将图像转换为一维数组
img_flat = img.reshape((-1, 3))
# 执行k-means聚类
kmeans = KMeans(n_clusters=8, random_state=0).fit(img_flat)
labels = kmeans.labels_
# 将每个像素点重新赋值为其所属的聚类中心的颜色值
new_img = np.zeros_like(img_flat)
for i in range(len(img_flat)):
new_img[i] = kmeans.cluster_centers_[labels[i]]
# 将一维数组转换回二维图像
new_img = new_img.reshape(img.shape)
# 显示原始图像和聚类后的图像
cv2.imshow('Original', img)
cv2.imshow('K-means Clustering', new_img)
cv2.waitKey(0)
cv2.destroyAllWindows()
```
该代码中使用了OpenCV和scikit-learn库,首先读取图像并将其转换为一维数组,然后使用KMeans类执行聚类,将每个像素点重新赋值为其所属的聚类中心的颜色值,最后将一维数组转换回二维图像并显示原始图像和聚类后的图像。
需要注意的是,该代码仅仅是一个示例,实际应用中需要根据图像的特点对k-means算法的参数进行调整,以达到更好的聚类效果。
阅读全文