# Image Color Clustering

requirement

- opencv
- matplotlib
- sklearn

short story

the purpose behind this experiment is to cluster image to n (cluster/area/segmentation)

code

import library

import cv2

from sklearn.cluster import KMeans

import matplotlib.pyplot as plt

load data

#import data

im = cv2.imread('rainbow.jpg')

reshape data

#reshape data

reshape_data = im.reshape((im.shape[0]*im.shape[1],im.shape[2]))

As we know, original data from image is matrix. For example I have 3D matrix with shape (525,525,3), which means matrix has height 525, width 525, and dimension 3. Next transform into shape 2D matrix with dimension height= 525*525 and width = 3 as RGB and it looks like this.

import k means

#import kmeans

kmeans = KMeans(n_clusters=5, random_state=0)

fit k means

#data transform

data_transfrom = kmeans.predict(reshape_data).reshape((im.shape[0],im.shape[1]))

show it

#imshow

plt.imshow(data_transfrom)

Result

6 cluster

2 cluster

3 cluster

4 cluster

5 cluster