Ответ 1
Функция работает следующим образом:
# Import the cv2 library
import cv2
# Read the image you want connected components of
src = cv2.imread('/directorypath/image.bmp')
# Threshold it so it becomes binary
ret, thresh = cv2.threshold(src,0,255,cv2.THRESH_BINARY+cv2.THRESH_OTSU)
# You need to choose 4 or 8 for connectivity type
connectivity = 4
# Perform the operation
output = cv2.connectedComponentsWithStats(thresh, connectivity, cv2.CV_32S)
# Get the results
# The first cell is the number of labels
num_labels = output[0]
# The second cell is the label matrix
labels = output[1]
# The third cell is the stat matrix
stats = output[2]
# The fourth cell is the centroid matrix
centroids = output[3]
Ярлыки - это матрица размера входного изображения, где каждый элемент имеет значение, равное его метке.
Статистика - это матрица статистики, которую вычисляет функция. Он имеет длину, равную количеству меток и ширине, равной количеству статистических данных. Его можно использовать с документацией OpenCV для него:
Вывод статистики для каждой метки, включая метку фона, см. ниже для имеющихся статистических данных. Доступ к статистике осуществляется через статистика [label, COLUMN], где доступные столбцы определены ниже.
- cv2.CC_STAT_LEFT Самая левая (x) координата, которая является включенным началом ограничивающей рамки в горизонтальном направлении.
- cv2.CC_STAT_TOP Самая верхняя (y) координата, которая является включенным началом ограничивающей рамки в вертикальном направлении.
- cv2.CC_STAT_WIDTH Горизонтальный размер ограничивающей рамки
- cv2.CC_STAT_HEIGHT Вертикальный размер ограничивающей рамки
- cv2.CC_STAT_AREA Общая площадь (в пикселях) подключенного компонента
Центроиды - это матрица с местоположениями x и y каждого центроида. Строка в этой матрице соответствует номеру метки.