Python基础不牢,有些语法都不知道是什么,此处贴出源代码,是一个划分大米和小米的Kmeans算法示例。
import cv2 as cv
import numpy as np
import matplotlib.pyplot as plt
#创建要进行分类的数据,小米和大米各60个数据,小米直径为0,50,大米为200,250
xiaoMI = np.random.randint(0,50,60)
daMI = np.random.randint(200,250,60)
#将数据混合,并且reshape为120列
MI = np.hstack((xiaoMI,daMI))
MI = MI.reshape((120,1))
MI = np.float32(MI)
#调用kmeans
#算法迭代的终止标签
criteria = (cv.TERM_CRITERIA_EPS+cv.TERM_CRITERIA_MAX_ITER,10,1.0)#表示精度达到1.0,或者迭代次数达到10时,停止迭代。
flags = cv.KMEANS_RANDOM_CENTERS#表示随机选取中心点
retval,bestLabel,centers = cv.kmeans(MI,2,None,criteria,10,flags)#函数参数分别为,要进行划分的数据、划分成几份、返回值索引、criteria、使用不同的初始分类值得次数、flags
#打印返回值
print(retval)
print(bestLabel)
print(centers)
# 获取分类结果
XM = MI[bestLabel==0]
DM = MI[bestLabel==1]
#绘制原始数据
plt.plot(XM,'ro')
plt.plot(DM,'bo')
#绘制中心点
plt.plot(centers[0],'rx')
plt.plot(centers[1],'bx')
plt.show()