import cv2
import numpy as np
from sklearn.cluster import KMeans
# 加载图像
img = cv2.imread('icon.jpg')
# 调整图像大小
img = cv2.resize(img, (128, 128))
# 像素归一化
img = img.reshape(-1, 3) / 255.0
# 使用KMeans聚类算法分割图像
num_clusters = 4 # 聚类中心数量
kmeans = KMeans(n_clusters=num_clusters, random_state=0).fit(img)
labels = kmeans.labels_
# 计算颜色块的数量
unique, counts = np.unique(labels, return_counts=True)
colors = dict(zip(unique, counts))
# 显示图像和结果
image_segmented = np.zeros_like(img)
for k in range(num_clusters):
image_segmented[labels == k] = kmeans.cluster_centers_[k]
image_segmented = image_segmented.reshape(128, 128, 3)
cv2.imshow('Image', cv2.resize(np.hstack((img.reshape(128, 128, 3), image_segmented)), (1024, 512)))
print('颜色块数量:', colors)
cv2.waitKey(0)
cv2.destroyAllWindows()
10-06
1万+

11-11
6332

05-11
356

09-10
563
