利用KMeans算法对图片进行分割

来源:互联网 发布:四柱排盘软件下载 编辑:程序博客网 时间:2024/05/22 23:04
from sklearn.cluster import KMeansimport numpy as npimport PIL.Image as imagedef loadData(filePath):    f = open(filePath, 'rb')    data = []    img = image.open(f) #PIL.Image.open(图片路径)    m, n = img.size    for i in range(m):        for j in range(n):            x,y,z = img.getpixel((i, j)) #过去每个像素点的rgb值            data.append([x/256.0, y/256.0,z/256.0])#将其归一化    f.close()    return np.mat(data), m, nimgData, row, col  = loadData("/Users/tangweize/Desktop/BUlls.jpg")km = KMeans(n_clusters=3)label = km.fit_predict(imgData)label = label.reshape([row, col]) #细节pic_new = image.new("L", (row, col))for i in range(row):    for j in range(col):        pic_new.putpixel((i, j),int(256/(label[i][j] + 1))) #填充每个点的灰度值print(row, col)print(pic_new)pic_new.save("gg.jpg", "JPEG")

效果图

这里写图片描述

原创粉丝点击