В настоящее время я реализую алгоритм удаления теней и хочу пометить все отдельные области теней. Для этого я использую функцию cv2.connectedComponents (). Я ввожу свою теневую маску и в качестве вывода хочу обозначить области теней.
Входное изображение:
![Input shadow mask](https://i.stack.imgur.com/aUUfZ.png)
Выходное изображение:
![Output image](https://i.stack.imgur.com/XR12a.png)
Как вы можете видеть, она правильно маркирует нижнюю часть, но в верхней части некоторые области отсутствуют. Что я здесь не так делаю? Я использую код от здесь :
def applyShadowRemoval(image, shadow_map, filename, debug = False):
b,g,r,nir = cv2.split(image)
rgb_image = np.stack([b,g,r], axis=2)
ret, labels = cv2.connectedComponents((1-shadow_map[0]))
label_hue = np.uint8(179*labels/np.max(labels))
blank_ch = 255*np.ones_like(label_hue)
labeled_img = cv2.merge([label_hue, blank_ch, blank_ch])
# cvt to BGR for display
labeled_img = cv2.cvtColor(labeled_img, cv2.COLOR_HSV2BGR)
labeled_img[label_hue==0] = 0
if(debug == True):
cv2.imwrite('images/' + filename[:-4] + "_labeled_components.png", labeled_img[0:1000, 0:1000])
return labeled_img