OpenCV python k均值聚类分类(图片)
import numpy as np
import cv2
import matplotlib.pyplot as plt
def main():
img = cv2.imread("lena_color.jpg")
img = cv2.cvtColor(img, cv2.COLOR_BGR2RGB)
data = img.reshape((-1, 3))
data = np.float32(data)
criteria = (cv2.TERM_CRITERIA_EPS + cv2.TERM_CRITERIA_MAX_ITER, 10, 1.0)
flags = cv2.KMEANS_RANDOM_CENTERS
ret, best_labels, centers = cv2.kmeans(data, 2, None, criteria, 10, flags)
center = np.uint8(centers)
res1 = center[best_labels.flatten()]
res2 = res1.reshape(img.shape)
print("紧密度:", ret)
print("中心点数据", centers)
plt.subplot(121)
plt.imshow(img)
plt.axis("off")
plt.subplot(122)
plt.imshow(res2)
plt.axis("off")
plt.show()
if __name__ == '__main__':
main()
![在这里插入图片描述](https://i-blog.csdnimg.cn/blog_migrate/c097d0015ef970b67f43cc185ea58a81.png)