本文共 801 字,大约阅读时间需要 2 分钟。
使用Kmeans将图片颜色聚类
import cv2import numpy as npimport matplotlib.pyplot as pltImg= cv2.imread('sunshine.jpg')img = cv2.cvtColor(Img,cv2.COLOR_BGR2RGB)Z = img.reshape((-1,3))z = np.float32(Z)criteria = (cv2.TERM_CRITERIA_EPS + cv2.TERM_CRITERIA_MAX_ITER, 10, 1.0)k = [0,4,8,12,16,20]#将颜色聚类,分为原始,4,8,12,16,20for n,i in enumerate(k): plt.subplot(2,3,n+1) if n ==0: plt.imshow(img),plt.title('original'),plt.xticks([]),plt.yticks([]) continue ret,label,center=cv2.kmeans(z,i,None,criteria,10,cv2.KMEANS_RANDOM_CENTERS) center = np.uint8(center) res = center[label.ravel()] w,h = res.shape w_n = np.sqrt(w).astype(np.uint32) res = res.reshape((w_n,w_n,3)) plt.imshow(res),plt.title('K ={}'.format(i)),plt.xticks([]),plt.yticks([])plt.show()可以看出随着颜色聚类数量增加,画面越来越接近原始照片
转载地址:http://ahben.baihongyu.com/