Ich versuche, die Kmeans von opencv anwenden, um das Bild im HSV-Farbraum zu segmentieren.Python + OpenCV Farbsegmentierung mit Kmeans
def leftOffset(src, p_countours):
height, width, size = src.shape
p_width = width/p_countours
o_left = src[0:height, 0:p_width]
HSV_img = cv2.cvtColor(o_left, cv2.COLOR_BGR2HSV)
hue = HSV_img[0]
hue = np.float32(HSV_img)
# Define criteria = (type, max_iter = 10 , epsilon = 1.0)
criteria = (cv2.TERM_CRITERIA_EPS + cv2.TERM_CRITERIA_MAX_ITER, 10, 1.0)
# Set flags (Just to avoid line break in the code)
flags = cv2.KMEANS_RANDOM_CENTERS
# Apply KMeans
compactness,labels,centers = cv2.kmeans(hue,2,criteria,10,flags)
centers = np.uint8(centers)
res = centers[labels.flatten()]
res2 = res.reshape((hue.shape))
cv2.imshow("o_left", hue)
cv2.waitKey(0)
Ich bin jetzt in der Lage, den KMeans Algorithmus auf die HSVImage [0] mit K = 2, und wie kann ich nach dem Ergebnis ein Bild wie Schwelle erhalten bewerben?
Dank
die Frage zu klären: Ich habe farbbasierten Captchas, und ich möchte die jeweils Ziffern Segment.
Ich werde k-Mittel-Methode verwenden, um die dominante Farbe, um herauszufinden, und das Segment der Innen Ziffern.
ich nicht ganz verstehe die Frage kann. Kannst du das bitte klären, indem du ein Bild einfügst? – tfv
@tfv Ich habe 2 Testbilder hinzugefügt – Mix
Welche Version von opencv verwenden Sie? –