栏目分类:
子分类:
返回
名师互学网用户登录
快速导航关闭
当前搜索
当前分类
子分类
实用工具
热门搜索
名师互学网 > IT > 软件开发 > 后端开发 > Python

#python 颜色聚类处理

Python 更新时间: 发布时间: IT归档 最新发布 模块sitemap 名妆网 法律咨询 聚返吧 英语巴士网 伯小乐 网商动力

#python 颜色聚类处理

Kmeans聚类算法:是最常用的聚类算法,主要思想是:在给定K值和K个初始类簇中心点的情况下,把每个点(亦即数据记录)分到离其最近的类簇中心点所代表的类簇中,所有点分配完毕之后,根据一个类簇内的所有点重新计算该类簇的中心点(取平均值),然后再迭代的进行分配点和更新类簇中心点的步骤,直至类簇中心点的变化很小,或者达到指定的迭代次数。

假设k值为2时的迭代聚类

案例:对一张图片进行主色调提取

1、压缩图片,将图片中各像素块的颜色进行储存

def colorz(filename,n=3):
    img=Image.open(filename)
    img=img.rotate(-90)
    img.thumbnail((200,200))
    w,h=img.size
    print(w,h)
    print('w*h=',w*h)
    points=[]
    for count,color in img.getcolors(w*h):
        points.append(color)

2、对图片的像素点的集合进行聚类,计算出中心点的色彩值

def kmeansColor(img,n):
    points=colorz(img,3)
    fe = np.array(points,dtype=float)
    codebook, distortion = kmeans(fe,n) #n表示有n个聚类中心
    centers=np.array(codebook,dtype=int)#计算出的色彩中心位置
    return centers

3、可视化显示聚类结果,rgb的原理

#print("codebook:", codebook)   #聚类中心
centers=np.array(codebook,dtype=int)  #变为色彩,还得转为整数
fe=np.array(points)
plt.scatter(fe[:,0], fe[:,2], c='b')#设置全部像素点的颜色为蓝色
plt.scatter(codebook[:, 0], codebook[:,2], c='r')   #聚类中心为红色
plt.show()

设置5个聚类中心的结果:

在HTML中显示:

{% for c in imgcolors %}
1
{% endfor %}

转载请注明:文章转载自 www.mshxw.com
本文地址:https://www.mshxw.com/it/487521.html
我们一直用心在做
关于我们 文章归档 网站地图 联系我们

版权所有 (c)2021-2022 MSHXW.COM

ICP备案号:晋ICP备2021003244-6号