使用kmeans对图片进行切割
Posted 王起帆
tags:
篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了使用kmeans对图片进行切割相关的知识,希望对你有一定的参考价值。
源代码地址:https://github.com/wangqifan/PictureCutting
效果
切割前
切割后
接下来介绍如何写这个程序
首选导入工具包:
import numpy as np import PIL.Image as image from sklearn.cluster import KMeans
然后将图片数据加载到numpy数组中
def loadData(filepath): f=open(filepath,\'rb\') data=[] img=image.open(f) m,n=img.size for i in range(m): for j in range(n): x,y,z = img.getpixel((i,j)) data.append([x/256.0,y/256.0,z/256.0]) f.close() return np.mat(data),m,n imgData,row,col=loadData("wqf.jpg")
对数据进行学习
label = KMeans(n_clusters=20).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): print(label[i][j]) pic_new.putpixel((i,j),int(256/(label[i][j]+2))) pic_new.save("2.jpg","JPEG")
NOTE:kmeans需要制定簇,建议使用简单点的图片效果更明显
以上是关于使用kmeans对图片进行切割的主要内容,如果未能解决你的问题,请参考以下文章