import cv2
import numpy as np
from matplotlib import pyplot as plt
# 只有一个特征,只由人们的身高决定T恤大小
x = np.random.randint(25, 50, (25, 2)) # 生成25-100之间的25个随机数
y = np.random.randint(60, 85, (25, 2))
z = np.vstack((x, y)) # 在水平方向堆叠数据,50个数据
z = np.float32(z) # 转换数据类型
# 使用Kmeans函数
# 设置变量
criteria = (cv2.TERM_CRITERIA_EPS + cv2.TERM_CRITERIA_MAX_ITER, 10, 1.0)
# 返回紧密度,标志,中心
ret, label, center = cv2.kmeans(z, 2, None, criteria, 10, cv2.KMEANS_RANDOM_CENTERS)
A = z[label.ravel() == 0]
B = z[label.ravel() == 1]
plt.scatter(A[:, 0], A[:, 1])
plt.scatter(B[:, 0], B[:, 1], c='r')
plt.scatter(center[:, 0], center[:, 1], s=80, c='y', marker='s')
plt.xlabel('Height'), plt.ylabel('Weight')
plt.show()