Python聚类色彩提取——Scipy-kmeans

2023-05-16

一、聚类:物以类聚

数组可以进行聚类,并找到数组的聚类中心。使用的第三方库是scipy,需要pip install scipy,先安装该库。数组聚类代码:

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)
print("codebook:",codebook)
print("distortion:",distortion)

plt.scatter(fe[:,0],fe[:,1],c="g")
plt.scatter(codebook[:,0],codebook[:,1],c="r")
plt.show()#红色的为聚类中心

运行结果:

 二、色彩聚类提取

图像颜色是由不同的RGB数值组成的,因此除了数字,图像色彩同样可以进行聚类。并利用之前学过的Pycharm flask框架,将结果加载到网页中显示。

思路是先生成图像缩略图,对缩略图聚类,得到每个点的RGB值,再利用算法将色彩聚类,并得到聚类中心。色彩聚类最常使用的算法是Kmeans。

K均值聚类算法:一种迭代求解的聚类分析算法,其步骤是,预将数据分为K组,则随机选取K个对象作为初始的聚类中心,然后计算每个对象与各个种子聚类中心之间的距离,把每个对象分配给距离它最近的聚类中心。聚类中心以及分配给它们的对象就代表一个聚类。每分配一个样本,聚类的聚类中心会根据聚类中现有的对象被重新计算。这个过程将不断重复直到满足某个终止条件。终止条件可以是没有(或最小数目)对象被重新分配给不同的聚类,没有(或最小数目)聚类中心再发生变化,误差平方和局部最小。

Python部分代码:

from flask import Flask,render_template
import numpy as np
from PIL import Image
from scipy.cluster.vq import vq, kmeans, whiten
import imageColor

app = Flask(__name__)

#用缩略图聚类
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)
    return points

#对色彩聚类
def kmeansColor(img,n):
    points=colorz(img,3)
    fe = np.array(points,dtype=float)
    codebook, distortion = kmeans(fe,n)
    centers=np.array(codebook,dtype=int)
    return centers


@app.route("/")
def index():
    #genFrame()
    pic = "static/fall.png"
    imgcolors = imageColor.kmeansColor("static/fall.png",5)
    return render_template("imageColor.html", pic1=pic, imgcolors=imgcolors)

if "__main__" == __name__ :
    app.run()

html部分代码:

<!DOCTYPE html>
<html lang="en">
<head>
    <meta charset="UTF-8">
    <title>聚类色彩提取</title>
</head>
<body>
    聚类色彩提取<br>
    <img height="400" src='static/fall.png'>
    <br>
    {{imgcolors}}<br>
    {% for c in imgcolors %}
    <font style="color:rgb({{c[0]}},{{c[1]}},{{c[2]}})">色彩提取</font>
    {% endfor %}
</body>
</html>

运行结果:

 

本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)

Python聚类色彩提取——Scipy-kmeans 的相关文章

随机推荐

  • 转载--git教程

    http lazynight me 2898 html 转载于 https www cnblogs com benchan2015 p 4897797 html
  • 网络通信第一课 C++封装HTTP请求报文说明

    一个HTTP请求报文由请求行 xff08 request line xff09 请求头部 xff08 header xff09 空行和请求数据4个部分组成 使用C 43 43 组装上述报文 boost asio streambuf requ
  • [重要新功能]删除自己发表的评论

    当你登录后 使用cookie也可以 发表评论 不管是使用普通评论还是高级评论 xff0c 你就可以在其他人的Blog中删除自己发表过的评论 这样你在发表评论时 xff0c 如果写错了内容 可以删除后重发 接着 xff0c 准备增加在管理页面
  • 解析FAT16文件系统

    引导扇区的信息例如以下 xff1a 1 偏移地址00H xff0c 长度3 xff0c 内容 xff1a EB 3C 90 跳转指令 2 偏移地址03H xff0c 长度8 内容 xff1a 4D 53 44 4F 53 35 2E 30
  • 将 n个球放入M个盒子中, 设每个球落入各个盒子是等可能的,求有球的盒子数X 的期望...

    将 n个球放入M个盒子中 设每个球落入各个盒子是等可能的 求有球的盒子数X 的期望 引入随机变量 xi 表示第i个盒子有没有球 则 X 61 X1 43 X2 43 43 XM 于是 E X 61 E X1 43 E X2 43 43 E
  • Navicat for MySQL Mac 破解版

    今天在macOS 系统下搭建 Java开发环境 xff0c 需要配置MySQL xff0c 按照Windows的习惯 xff0c 使用Navicat for MySQL 操作比较习惯 然后找不到比较好的破解版 xff0c 这里介绍一个老版的
  • Echarts中X轴只显示最大值和最小值

    目标 xff1a 本篇文章是介绍使用Echarts时设置X轴上的刻度只显示最大值和最小值 xff0c 不显示其他的刻度 这个我在做项目的过程中遇到的一个需求 xff0c 我花费了很长的时间才找到的一种解决办法 xff0c 希望对后面遇到此坑
  • 机器学习期中考复习(md全是证明题)

    佛了
  • 页面字体随窗口变化大小

    详细描述 遇到了一个手机页面字体不能定死的问题 xff0c 页面会随着页面改变 xff0c 而改变大小 师弟遇到的问题 xff0c 我也遇到过 xff0c 我感觉这个东西可能还会有人遇到 截图 分辨是1000px的字体大小和400px的字体
  • 从Hadoop URL中读取数据

    为什么80 的码农都做不了架构师 xff1f gt gt gt 要从Hadoop文件系统中读取文件 xff0c 一个最简单的方法是使用java net URL对象来打开一个数据流 xff0c 从而从中读取数据 一般的格式如下 xff1a 1
  • 【01月11日】【精彩电影合集】【10部】【亲测】【Lsyq5647发布】

    今日电影更新 10部 1 爱情 07最新动作大片DVD中字 2 国家宝藏2 xff1a 神秘书 美国2008 动作大片DVD中文字幕 3 龙过鼠年 范伟 赵本山2008贺岁大片国语DVD版 4 本能 沙郎斯通性感演绎DVD未删减版 5 黑水
  • 关于ElasticsearchRepository的使用笔记

    2019独角兽企业重金招聘Python工程师标准 gt gt gt 一个很全的API链接文档 以下是使用Spring data Jpa操作ES的一些记录 在ElasticsearchRepository中我们可以使用Not Add Like
  • Java 判断实体类属性是否为空工具类

    2019独角兽企业重金招聘Python工程师标准 gt gt gt import org apache commons lang StringUtils import java lang reflect Field import java
  • TLS Error: TLS handshake failed解决办法

    直接修改端口号 服务器端和客服端都要改哟 转载于 https blog 51cto com luoguoling 1080298
  • windows禁用rc4 算法

    公司的Windows服务器被扫描出安全漏洞 SSL TLS 受诫礼 BAR MITZVAH 漏洞 CVE 2015 2808 和安全厂家沟通 xff0c 漏洞是由rc4算法 xff0c 引起的 xff01 把服务里面的rc4算法禁用就行了
  • iOS 抓取 UIwebview 上 所有 图片 并进行滚动播放

    关于在UIwebview上添加滚动图片 两种滚动手势会混淆 xff0c 应为webview有webview scrollview的属性 故参照昨天的随笔 scrollview嵌套解决方案 本篇随笔主要讲循环使用正则表达式 xff0c 本人在
  • 优化网络爬虫

    Date 2019 07 03 Author Sun 优化之前的网络爬虫代码如下 xff1a code coding utf 8 author 61 39 sun 39 date 61 39 2019 7 3 上午10 53 39 from
  • 如何使用SendMessage发送按键组合,例如:Ctrl+A

    代码 var hwnd Integer begin hwnd 61 FindWindow 39 Notepad 39 nil SetForegroundWindow hwnd keybd event VK CONTROL MapVirtua
  • 算法题:按规律输出

    编写算法 xff1a 打印具有下面规律的图形 1 5 2 8 6 3 10 9 7 4 输入 xff1a 手动输入n 输出 xff1a 格式输出n行 思路 xff1a 1 定义100x100的二维数组并给其赋值 a30a31a32a33a2
  • Python聚类色彩提取——Scipy-kmeans

    一 聚类 xff1a 物以类聚 数组可以进行聚类 xff0c 并找到数组的聚类中心 使用的第三方库是scipy xff0c 需要pip install scipy xff0c 先安装该库 数组聚类代码 xff1a import numpy