Сначала выполните ЭТУ ДОКУМЕНТАЦИЮ , чтобы получить маркеры на изображении.Я использовал то же изображение, представленное в этой документации.
После этого построчно следуйте этому коду и визуализируйте, что содержит каждая переменная:
Каждому уникальному связанному компоненту присваивается уникальное значение впеременная markers
.Я нормализую эти значения в markers
до целого числа.Каждый подключенный компонент может быть получен при конкретном пороговом значении, указанном в списке uniq_thresh
.
label_hue = np.uint8(179*markers/1)
uniq_thresh = np.unique(label_hue).tolist()
cv2.imshow('label_hue', label_hue)
uniq_thresh.sort(reverse=True)
prev
- это изображение, имеющее ту же форму, что и исходное изображение, но с пикселями со значением 0.
prev = np.zeros_like(label_hue)
Теперь для каждого из уникальных пороговых значений вlist uniq_thresh
Я показываю подключенный компонент.Но поскольку thresh
возвращает изображение, имеющее компоненты выше определенного порога, я вычитаю из него предыдущее пороговое изображение, чтобы получить один компонент.
for th in uniq_thresh:
print(th)
ret, thresh = cv2.threshold(label_hue, th, 255, cv2.THRESH_BINARY)
cv2.imshow('ind', thresh)
cv2.imshow('ind2', thresh - prev)
prev = thresh
cv2.waitKey(0)
cv2.destroyAllWindows()