Я хочу использовать функцию cv2.connectedComponents для подключения компонентов к двоичному изображению, как показано ниже...
Все работает, кроме выводимого массива меток. В этом массиве только нули, а не порядковые номера, как указано, в соответствии с идентифицированными компонентами.
import cv2
import numpy as np
img = cv2.imread('eGaIy.jpg', 0)
img = cv2.threshold(img, 127, 255, cv2.THRESH_BINARY)[1] # ensure binary
ret, labels = cv2.connectedComponents(img)
# Map component labels to hue val
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)
# set bg label to black
labeled_img[label_hue==0] = 0
cv2.imshow('labeled.png', labeled_img)
cv2.waitKey()
выведенные метки --> labels.shape: (256L, 250L)
[[0 0 0 ..., 0 0 0]
[0 0 0 ..., 0 0 0]
[0 0 0 ..., 0 0 0]
...,
[0 0 0 ..., 0 0 0]
[0 0 0 ..., 0 0 0]
[0 0 0 ..., 0 0 0]]
...
означает, что у вас есть куча там другие значения. Простым тестом было бы выполнитьnp.sum(labels)
, если это 0, то это только 0. Вы также можете попробовать предложение глушителя для вашего теста. - person api55   schedule 16.01.2018