是否可以使用任何聚类算法,使用opencv根据颜色将对象划分为2个聚类,以便能够计算2个不同颜色的数量(颜色对于所有对象不完全相同,但它们相似)图像中的物体?
到目前为止,以下代码是我所取得的成就
def getThresholdsKmeans(imageFile):
im = cv2.imread(imageFile);
im = ndimage.gaussian_filter(im,10)
gray = cv2.cvtColor(im,cv2.COLOR_BGR2GRAY);
gray = gray.ravel();
gray = np.float32(gray);
criteria = (cv2.TERM_CRITERIA_EPS + cv2.TERM_CRITERIA_MAX_ITER,10,1);
flags = cv2.KMEANS_RANDOM_CENTERS;
compactness,labels,centers = cv2.kmeans(gray,3,criteria,10,0)
print centers
return centers
我使用函数返回的值并对图像进行阈值处理。
答案 0 :(得分:0)
您可以使用cv::kmeans。
对于每个像素,提取三个颜色值并将其插入data
矩阵
这导致输入图像行和三列中具有像素数的矩阵
将此矩阵用作data
参数。根据您的定义,参数K
将为2或3(两个彩色对象+背景颜色?)。