码迷,mamicode.com
首页 > 其他好文 > 详细

使用kmeans对图片进行切割

时间:2017-06-11 20:16:47      阅读:415      评论:0      收藏:0      [点我收藏+]

标签:end   学习   from   结果   技术   span   pre   int   sha   

源代码地址: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对图片进行切割

标签:end   学习   from   结果   技术   span   pre   int   sha   

原文地址:http://www.cnblogs.com/zuin/p/6986004.html

(0)
(0)
   
举报
评论 一句话评论(0
登录后才能评论!
© 2014 mamicode.com 版权所有  联系我们:gaon5@hotmail.com
迷上了代码!