• 图像分割利用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格式保存图像
    追求吾之所爱
  • 相关阅读:
    python项目文件夹
    内置函数
    函数的递归
    python入门之模块
    匿名函数
    生成器表达式
    三元表达式
    列表生成式
    input相关问题总结
    表单验证
  • 原文地址:https://www.cnblogs.com/rstz/p/12374965.html
Copyright © 2020-2023  润新知