Ask Your Question

humungousDust2's profile - activity

2017-01-26 18:20:52 -0600 received badge  Famous Question (source)
2016-07-19 04:04:13 -0600 received badge  Notable Question (source)
2015-12-31 06:51:37 -0600 received badge  Popular Question (source)
2015-10-29 11:33:41 -0600 received badge  Student (source)
2014-02-09 20:05:37 -0600 received badge  Scholar (source)
2014-02-09 20:05:30 -0600 commented answer How can you use K-Means clustering to posterize an image using c++?

Perfect, thank you very much. This was exactly what I was looking for.

2014-02-05 19:17:51 -0600 asked a question How can you use K-Means clustering to posterize an image using c++?

Hi all,

I'm trying to posterize an image, i.e. reduce the number of colours in an image, but I'm not having much luck.

I've found the following Python code from OpenCV's documentation, which uses K-Means:

import numpy as np
import cv2

img = cv2.imread('home.jpg')
Z = img.reshape((-1,3))

# convert to np.float32
Z = np.float32(Z)

# define criteria, number of clusters(K) and apply kmeans()
criteria = (cv2.TERM_CRITERIA_EPS + cv2.TERM_CRITERIA_MAX_ITER, 10, 1.0)
K = 8
ret,label,center=cv2.kmeans(Z,K,None,criteria,10,cv2.KMEANS_RANDOM_CENTERS)

# Now convert back into uint8, and make original image
center = np.uint8(center)
res = center[label.flatten()]
res2 = res.reshape((img.shape))

cv2.imshow('res2',res2)
cv2.waitKey(0)
cv2.destroyAllWindows()

My problem is that I only know C/C++. Would someone please help me out by converting this to the C++ equivalent?

Thanks in advance.