图像分割利用KMeans生成灰度图
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生成灰度图的更多相关文章
- Qt生成灰度图(转载)
Qt生成灰度图(转载) 项目中用到大量基础图像处理知识,其中灰度图的生成是很重要的一环. 先补充一些基础知识: ------------------------------------------ ...
- 利用JFreeChart生成时序图(6) (转自 JSP开发技术大全)
利用JFreeChart生成时序图(6) (转自 JSP开发技术大全) 14.6 利用JFreeChart生成时序图 通过JFreeChart插件只能生成普通效果的时序图,利用工厂类ChartFact ...
- 利用JFreeChart生成区域图 (5) (转自 JSP开发技术大全)
利用JFreeChart生成区域图 (5) (转自 JSP开发技术大全) 14.5 利用JFreeChart生成区域图 通过JFreeChart插件只能生成普通效果的区域图,利用工厂类ChartFac ...
- 利用JFreeChart生成折线图 (4) (转自 JSP开发技术大全)
利用JFreeChart生成折线图 (4) (转自 JSP开发技术大全) 14.4 利用JFreeChart生成折线图 通过JFreeChart插件,既可以生成普通效果的折线图,也可以生成3D效果的折 ...
- opencv生成灰度图并保存
#include <opencv2/opencv.hpp>#include <iostream> using namespace cv;using namespace std; ...
- 利用powerdesigner反向数据库结构,生成ER图
参考月下狼~图腾~:<利用powerdesigner反向数据库结构,生成ER图> https://www.zybuluo.com/Jpz/note/123582 首先新建一个"P ...
- unity 读取灰度图生成按高程分层设色地形模型
准备灰度图 1.高程按比例对应hue色相(hsv)生成mesh效果 o.color = float4(hsv2rgb(float3(v.vertex.y/100.0, 0.5, 0.75)), 1.0 ...
- unity读取灰度图生成等值线图
准备灰度图 grayTest.png,放置于Assets下StreamingAssets文件夹中. 在场景中添加RawImage用于显示最后的等值线图. 生成等值线的过程,使用Marching ...
- unity读取灰度图生成三维地形mesh
准备灰度图 IGray.png及草地贴图 IGrass.jpg ,放入Assets下StreamingAssets文件夹中. 创建空材质,用作参数传入脚本. 脚本如下,挂载并传入材质球即可 ...
随机推荐
- Codeforces Round #610 (Div. 2)E(模拟,DFS)
先找到一条多边形的边,然后循环一圈输出多边形上的点.把每个三角形看作一个结点,以两个三角形之间公用边为边建立一张图,DFS输出叶子结点,则得到先切后切的顺序. #define HAVE_STRUCT_ ...
- 论STA | POCV/SOCV 对lib 的要求 (4)
在芯片制造过程中的工艺偏差由global variation 和local variation 两部分组成. 在集成电路设计实现中,global variation 用PVT 跟 RC-corner ...
- Redis-复制(MasterSlave)
Redis的复制(Master/Slave) 是什么: 行话:也就是我们所说的主从复制,主机数据更新后根据配置和策略, 自动同步到备机的master/slaver机制,Master以写为主,Slave ...
- Collection体系、遍历、泛型
Collection体系(集合类,它是一个接口): 两个子类: List.Set(这两个子类也是接口) List有两个常用子类:(值,不唯一,允许有重复 ...
- source insight 编译后出现停止工作解决方法
解决方法: 工程的路径不要有中文,都用英文
- CUP监测1分钟(60s)的python的matplotlib动态作图
import matplotlib.pyplot as plt import psutil import time # 第1步,导出通用字体设置 from matplotlib import font ...
- TensorFlow 模型的保存与载入
参考学习博客: # https://www.cnblogs.com/felixwang2/p/9190692.html 一.模型保存 # https://www.cnblogs.com/felixwa ...
- markdown区块
Markdown 区块 Markdown 区块引用是在段落开头使用 > 符号 ,然后后面紧跟一个空格符号: > 区块引用 > 菜鸟教程 > 学的不仅是技术更是梦想 显示结果如下 ...
- streamsets 安装
这里有很多坑点 1. 我下载的是rpm 包,full 直接安装, 安装好后,路径在 /opt 目录 2. 启动 -注意报错 2.1 先给他创建 一个 日志目录, 安装好后是不存在这个目录 mk ...
- 「CF859E」Desk Disorder
传送门 Luogu 解题思路 一眼想到二分图:但是求不了最大匹配方案数 oho. 于是考虑这么建图: 直接将一个人可以去的两把椅子连边,然后原图中的2n个点就会形成许多联通块,这个可以分步计数. 又因 ...