A 依据颜色的k均值聚类
def _1rgb_kmeans(picname='', cutnum=50, clus=5):
'''
彩色图像按颜色k-means聚类.
依赖:from scipy.cluster import vq
from scipy.misc import imresize #This function is only available if Python Imaging Library (PIL) is installed.
from PIL import Image
:param picname: 图像名,字符串
:param cutnum: 切成cut*cut个块
:param clus: 分几类
:return: 无,显示图像
'''
from scipy.misc import imresize
import scipy.cluster.vq
gridsize = cutnum
im_a = np.array(Image.open(picname))
x_num = int(im_a.shape[0] / gridsize)
y_num = int(im_a.shape[1] / gridsize)
grids = []
for x in range(gridsize):
for y in range(gridsize):
R = np.mean(im_a[x*x_num: (x+1)*x_num, y*y_num: (y+1)*y_num, 0])
G = np.mean(im_a[x * x_num:(x + 1) * x_num, y * y_num:(y + 1) * y_num, 1])
B = np.mean(im_a[x * x_num:(x + 1) * x_num, y * y_num:(y + 1) * y_num, 2])
grids.append([R,G,B])
grids = np.array(grids, 'f')
centroids, _ = vq.kmeans(grids, clus)