ITKeyword,专注技术干货聚合推荐

注册 | 登录

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

lights_joy 分享于

2020腾讯云双十一活动,全年最低!!!(领取3500元代金券),
地址https://cloud.tencent.com/act/cps/redirect?redirect=1073

2020阿里云最低价产品入口,含代金券(新老用户有优惠),
地址https://www.aliyun.com/minisite/goods

推荐:vs2013在图像处理中的应用(6):使用OpenCV进行图像处理

快乐虾 http://blog.csdn.net/lights_joy/(QQ群:Visual EmbedLinux Tools 375515651) 欢迎转载,但请保留作者信息 很久没有摸图像处理的东西了,近期刚好需要

快乐虾

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 


推荐:python加opencv进行图像处理

越来越觉得python是一强大的工具,处理样本确实不错。最近因项目需要涉及到图片处理,所以开始用python调用opencv,再次觉得python真乃神器也! import osimpor

在我们的脚本中调用它:

# 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()

很好的一个结果:














推荐:vs2013在图像处理中的应用(7):开发Python扩展

快乐虾 http://blog.csdn.net/lights_joy/(QQ群:Visual EmbedLinux Tools 375515651) 欢迎转载,但请保留作者信息 很久没有摸图像处理的东西了,近期刚好需要

快乐虾 http://blog.csdn.net/lights_joy/ 欢迎转载,但请保留作者信息 K均值是一个经典的聚类算法,我们试试在python下使用它。 首先以(-1.5, -1.5)和(1.5, 1.5)为中心点各生成10个点的随机坐

相关阅读排行


相关内容推荐

最新文章

×

×

请激活账号

为了能正常使用评论、编辑功能及以后陆续为用户提供的其他产品,请激活账号。

您的注册邮箱: 修改

重新发送激活邮件 进入我的邮箱

如果您没有收到激活邮件,请注意检查垃圾箱。