码迷,mamicode.com
首页 > 编程语言 > 详细

Python图像处理(11):k均值

时间:2015-06-26 00:36:01      阅读:209      评论:0      收藏:0      [点我收藏+]

标签:vs2013   opencv   python   图像处理   

快乐虾

http://blog.csdn.net/lights_joy/

欢迎转载,但请保留作者信息



K均值是一个经典的聚类算法,我们试试在python下使用它。

首先以(-1.5, -1.5)(1.5, 1.5)为中心点各生成10个点的随机坐标值,我们希望用K均值算法将它们正确的分类。


# 创建测试的数据点,2类
# 以(-1.5, -1.5)为中心
rand1 = np.ones((10,2)) * (-2) + np.random.rand(10, 2)
print(rand1)

# 以(1.5, 1.5)为中心
rand2 = np.ones((10,2)) + np.random.rand(10, 2)
print(rand2)

# 合并随机点
data = np.vstack((rand1, rand2))

接下来kmeans出场。

这个函数的python原型为:

In [14]: help(cv2.kmeans)

Help on built-in function kmeans:

 

kmeans(...)

    kmeans(data, K,bestLabels, criteria, attempts, flags[, centers]) -> retval, bestLabels,centers 


在我们的脚本中调用它:

# kmeans
(ret, label, center) = cv2.kmeans(data, 2, None, (cv2.TERM_CRITERIA_EPS | cv2.TERM_CRITERIA_MAX_ITER, 10, 0.1), 10, cv2.KMEANS_RANDOM_CENTERS )

通过此函数我们得到了2个类别的中心点和每个点所属的类别。 

最后按分类显示:

# 按label进行分类显示
idx = np.hstack((label, label))
for i in range(0, 2) :
    type_data = data[idx == i]
    type_data = np.reshape(type_data, (type_data.shape[0] / 2, 2))
    plt.plot(type_data[:,0], type_data[:,1], ‘o‘)

plt.show()

很好的一个结果:

技术分享










??

Python图像处理(11):k均值

标签:vs2013   opencv   python   图像处理   

原文地址:http://blog.csdn.net/lights_joy/article/details/46642377

(0)
(0)
   
举报
评论 一句话评论(0
登录后才能评论!
© 2014 mamicode.com 版权所有  联系我们:gaon5@hotmail.com
迷上了代码!