1 import numpy as np
2 import PIL.Image as image
3 from sklearn.cluster import KMeans
4
5 def loadData(filePath):
6 f = open(filePath,'rb')#以二进制形式打开文件
7 data = []
8 img = image.open(f)#以列表形式返回图片像素值
9 m,n = img.size#获取图片大小
10 for i in range(m):#将每个像素点RGB处理到0-1
11 for j in range(n):#范围内并存放进data
12 x,y,z = img.getpixel((i,j))
13 data.append([x/256.0,y/256.0,z/256.0])
14 f.close()
15 return np.mat(data),m,n#以矩阵形式返回data,以及图片大小m,n
16
17 imgData,row,col = loadData('kmeans/bull.jpg')#加载数据
18 label = KMeans(n_clusters=4).fit_predict(imgData)#获得每个像素所属类别
19 label = label.reshape([row,col])
20 pic_new = image.new("L", (row, col))#创建一个新的灰度图片保存聚类后的结果
21 for i in range(row):#根据所属聚类类别向图片添加灰度值
22 for j in range(col):
23 pic_new.putpixel((i,j), int(256/(label[i][j]+1)))
24 pic_new.save("result-bull-4.jpg", "JPEG")#以JPEG格式保存图像

图像分割利用KMeans生成灰度图的更多相关文章

  1. Qt生成灰度图(转载)

    Qt生成灰度图(转载)   项目中用到大量基础图像处理知识,其中灰度图的生成是很重要的一环. 先补充一些基础知识: ------------------------------------------ ...

  2. 利用JFreeChart生成时序图(6) (转自 JSP开发技术大全)

    利用JFreeChart生成时序图(6) (转自 JSP开发技术大全) 14.6 利用JFreeChart生成时序图 通过JFreeChart插件只能生成普通效果的时序图,利用工厂类ChartFact ...

  3. 利用JFreeChart生成区域图 (5) (转自 JSP开发技术大全)

    利用JFreeChart生成区域图 (5) (转自 JSP开发技术大全) 14.5 利用JFreeChart生成区域图 通过JFreeChart插件只能生成普通效果的区域图,利用工厂类ChartFac ...

  4. 利用JFreeChart生成折线图 (4) (转自 JSP开发技术大全)

    利用JFreeChart生成折线图 (4) (转自 JSP开发技术大全) 14.4 利用JFreeChart生成折线图 通过JFreeChart插件,既可以生成普通效果的折线图,也可以生成3D效果的折 ...

  5. opencv生成灰度图并保存

    #include <opencv2/opencv.hpp>#include <iostream> using namespace cv;using namespace std; ...

  6. 利用powerdesigner反向数据库结构,生成ER图

    参考月下狼~图腾~:<利用powerdesigner反向数据库结构,生成ER图> https://www.zybuluo.com/Jpz/note/123582 首先新建一个"P ...

  7. unity 读取灰度图生成按高程分层设色地形模型

    准备灰度图 1.高程按比例对应hue色相(hsv)生成mesh效果 o.color = float4(hsv2rgb(float3(v.vertex.y/100.0, 0.5, 0.75)), 1.0 ...

  8. unity读取灰度图生成等值线图

    准备灰度图 grayTest.png,放置于Assets下StreamingAssets文件夹中.   在场景中添加RawImage用于显示最后的等值线图.   生成等值线的过程,使用Marching ...

  9. unity读取灰度图生成三维地形mesh

    准备灰度图 IGray.png及草地贴图 IGrass.jpg ,放入Assets下StreamingAssets文件夹中.     创建空材质,用作参数传入脚本.   脚本如下,挂载并传入材质球即可 ...

随机推荐

  1. Codeforces Round #610 (Div. 2)E(模拟,DFS)

    先找到一条多边形的边,然后循环一圈输出多边形上的点.把每个三角形看作一个结点,以两个三角形之间公用边为边建立一张图,DFS输出叶子结点,则得到先切后切的顺序. #define HAVE_STRUCT_ ...

  2. 论STA | POCV/SOCV 对lib 的要求 (4)

    在芯片制造过程中的工艺偏差由global variation 和local variation 两部分组成. 在集成电路设计实现中,global variation 用PVT 跟 RC-corner ...

  3. Redis-复制(MasterSlave)

    Redis的复制(Master/Slave) 是什么: 行话:也就是我们所说的主从复制,主机数据更新后根据配置和策略, 自动同步到备机的master/slaver机制,Master以写为主,Slave ...

  4. Collection体系、遍历、泛型

    Collection体系(集合类,它是一个接口):     两个子类:         List.Set(这两个子类也是接口)             List有两个常用子类:(值,不唯一,允许有重复 ...

  5. source insight 编译后出现停止工作解决方法

    解决方法: 工程的路径不要有中文,都用英文

  6. CUP监测1分钟(60s)的python的matplotlib动态作图

    import matplotlib.pyplot as plt import psutil import time # 第1步,导出通用字体设置 from matplotlib import font ...

  7. TensorFlow 模型的保存与载入

    参考学习博客: # https://www.cnblogs.com/felixwang2/p/9190692.html 一.模型保存 # https://www.cnblogs.com/felixwa ...

  8. markdown区块

    Markdown 区块 Markdown 区块引用是在段落开头使用 > 符号 ,然后后面紧跟一个空格符号: > 区块引用 > 菜鸟教程 > 学的不仅是技术更是梦想 显示结果如下 ...

  9. streamsets 安装

    这里有很多坑点 1. 我下载的是rpm 包,full 直接安装, 安装好后,路径在 /opt 目录 2. 启动    -注意报错 2.1  先给他创建 一个 日志目录, 安装好后是不存在这个目录 mk ...

  10. 「CF859E」Desk Disorder

    传送门 Luogu 解题思路 一眼想到二分图:但是求不了最大匹配方案数 oho. 于是考虑这么建图: 直接将一个人可以去的两把椅子连边,然后原图中的2n个点就会形成许多联通块,这个可以分步计数. 又因 ...