如何在图像分割中更改 kmeans 簇的颜色
How can I change the color of kmeans clusters in image segmentation
我尝试使用 kmeans 聚类进行图像分割。
我想控制 classes.How 的颜色,我能做到吗?
# 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 = 2
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()
Image.fromarray(res2).save(f + 'kmeans.png', "png", quality=100)
kmean()
我不知道你想用2个中心控制什么。
如果你想获取二进制映射,你可以按照这里:
# 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 = 2
ret,label,center=cv2.kmeans(Z,K,None,criteria,10,cv2.KMEANS_RANDOM_CENTERS)
# get the most popular color and specify it is black
black_color = np.argmax(np.bincount(label.flatten()))
# generate binary map with white color
center = np.ones((K,1), dtype = 'uint8') * 255
center[black_color] = [0]
res = center[label.flatten()]
res2 = res.reshape((image_text.shape[0], image_text.shape[1], 1))
return res2
您可以更改任何您想要的颜色,而不仅仅是白色和黑色。希望能帮到你
我尝试使用 kmeans 聚类进行图像分割。
我想控制 classes.How 的颜色,我能做到吗?
# 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 = 2
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()
Image.fromarray(res2).save(f + 'kmeans.png', "png", quality=100)
kmean()
我不知道你想用2个中心控制什么。
如果你想获取二进制映射,你可以按照这里:
# 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 = 2
ret,label,center=cv2.kmeans(Z,K,None,criteria,10,cv2.KMEANS_RANDOM_CENTERS)
# get the most popular color and specify it is black
black_color = np.argmax(np.bincount(label.flatten()))
# generate binary map with white color
center = np.ones((K,1), dtype = 'uint8') * 255
center[black_color] = [0]
res = center[label.flatten()]
res2 = res.reshape((image_text.shape[0], image_text.shape[1], 1))
return res2
您可以更改任何您想要的颜色,而不仅仅是白色和黑色。希望能帮到你