第八章:Scipy-色彩聚类提取

本文介绍了使用Python的Scipy库进行色彩聚类分析的方法,包括从图片中提取色彩并排序、在小尺寸图片上进行聚类,以及如何将色彩聚类应用到Flask网页中的过程。通过实例展示了从图片处理到网页展示的完整流程。

目录

一.聚类示例(Jupyter)

二、聚类色彩提取实例

1.首先选定图片进行色彩提取,并将色彩出现频率进行排序,输出特定序列的颜色。

 2.用PIL生成小尺寸的图片,在小图片上聚类

3.取出图像的色彩和频次,代码如下:

4.对色彩聚类,代码如下: 

三.色彩聚类→网页Flask中

(一)定义网页样式

(二)聚类程序代码实现


安装:pip install scipy

一.聚类示例(Jupyter)

选取一组数据,对其进行聚类分析。代码如下:

import numpy as np
from scipy.cluster.vq import vq, kmeans, whiten
import matplotlib.pyplot as plt
 
fe = np.array([[1.9,2.0],
                     [1.7,2.5],
                     [1.6,3.1],
                     [0.1,0.1],
                     [0.8,0.3],
                     [0.4,0.3],
                     [0.22,0.1],
                     [0.4, 0.3],
                     [0.4,0.5],
                     [1.8,1.9]])
 
book = np.array((fe[0], fe[1]))
print(type(book))
print("book: \n",book)
 
codebook, distortion = kmeans(fe, book)
# 可以写kmeans(wf,2), 2表示两个质心,同时启用iter参数
print("codebook:", codebook)
print("distortion: ", distortion)
 
plt.scatter(fe[:,0], fe[:,1], c='g')
plt.scatter(codebook[:, 0], codebook[:, 1], c='r')
plt.show()
#运行结果:红色的为聚类中心

输出结果:

二、聚类色彩提取实例

1.首先选定图片进行色彩提取,并将色彩出现频率进行排序,输出特定序列的颜色。

from PIL import Image, ImageDraw, ImageFont
#引入第三方库
 
def get_dominant_colors(infile):
    #定义获取图片颜色的函数
    image = Image.open(infile)
    #读取图片
    
    small_image = image.resize((80, 80))
    #缩小图片,减少计算量
    
    result = small_image.convert("P", palette=Image.ADAPTIVE, colors=5)  
    #获取图片中5个主要的颜色
    
    palette = result.getpalette()
    color_counts = sorted(result.getcolors(), reverse=True)
    colors = list()
    #对颜色进行排序
 
    for i in range(5):
        palette_index = color_counts[i][1]
        dominant_color = palette[palette_index * 3 : 
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值