样本:

代码:

import numpy as np
import PIL.Image as image
from sklearn.cluster import KMeans def loadData(filePath):
f = open(filePath, 'rb') #二进制形式打开文件
data = []
img = image.open(f)
m, n = img.size #获取图片的大小
for i in range(m): #将每个像素点RGB颜色处理到0-1
for j in range(n):
x, y, z = img.getpixel((i, j)) #黑色为0,0,0 有颜色就好像是其他数字
#print(x, y, z)
data.append([x/256.0, y/256.0, z/256.0]) #二维列表[0.0, 0.0, 0.0]
f.close()
#print(data)
return np.mat(data), m, n #以矩阵形式返回data,以及图片大小 imgData, row, col = loadData('D:/python_source/Machine_study/mooc课程数据/课程数据/基于聚类的整图分割/bull.jpg')
#print(imgData, row, col)
label = KMeans(n_clusters=4).fit_predict(imgData)
#聚类获得每个像素所属的类别
label = label.reshape([row, col]) #二维列表
#print(label)
pic_new = image.new("L", (row, col)) #创建一张新的灰度图保存聚类后的效果
for i in range(row): #i,j为图片像素,例如 640*480. 根据所属类别向图片中添加灰度值
for j in range(col):
pic_new.putpixel((i, j), int(256/(label[i][j]+1)))
pic_new.save("result-bull-4.jpg", "JPEG")

效果图:

最新文章

  1. SQLSERVER全文搜索
  2. Chrome谷歌浏览器首页被改为Hao123导航怎么办|附各类解决方法【转】
  3. [iOS翻译]《iOS7 by Tutorials》系列:在Xcode 5里使用单元测试(下)
  4. C语言第四节数据类型、常量、变量
  5. JavaWeb学习笔记之Servlet(一)
  6. Memcached函数整理
  7. PowerDesigner 批量添加字段
  8. LOJ #2978「THUSCH 2017」杜老师
  9. android sdk content loader 0%不动
  10. ubuntu16.04下python2、python3环境选择与python升级(pip版本切换)
  11. Linux学习笔记15—RPM包的安装OR源码包的安装
  12. OPENQUERY (Transact-SQL),跨数据库操作。
  13. 【第五章】 springboot + mybatis
  14. Jquery和Ajax
  15. BZOJ5102 POI2018Prawnicy(堆)
  16. Docker部署Tomcat实例
  17. MinDos--操作系统
  18. hdu 5800 To My Girlfriend(背包变形)
  19. 等等,你可能误解nodejs了–通俗的概括nodejs的真相
  20. [转]ECMAScript 6 入门 -编程风格

热门文章

  1. postgre安装和使用(R&Python)
  2. 使用TensorFlow v2.0构建多层感知器
  3. ​知识图谱与机器学习 | KG入门 -- Part1 Data Fabric
  4. 机器学习算法系列:FM分解机
  5. iOS 性能优化收集
  6. iOS UmbrellaHeader
  7. Spring中的设计模式:工厂方法模式
  8. Python——matplotlib基础绘图函数示例
  9. javascript实现炫酷魔方
  10. Netty为什么不直接用AtomicXXX,而要用AtomicXXXFieldUpdater去更新变量呢?