【发布时间】:2014-09-15 13:32:48
【问题描述】:
是否可以使用任何聚类算法,使用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
我使用函数返回的值并对图像进行阈值处理。
【问题讨论】:
-
附加提示:我建议在 HSV/HSL 颜色空间(色调通道)中进行聚类
-
看看图像分割,而不是聚类。
-
也许给我们看一张图片,以便我们更好地了解您拥有什么以及您想要什么?如果您提供更好的信息,您得到的解决方案可能会更好。
-
i.stack.imgur.com/hz0qm.jpg。此示例图像只是其中一种。由于不同图像的背景、蓝色和棕色颜色不同,我正在尝试对图像进行预处理以获得蓝色和棕色的阈值。目前我可以获得这些值,但有时 kmeans 不会产生准确的结果。
标签: opencv cluster-analysis image-segmentation