Как использовать компоненты, связанные с openCV, со статистикой в ​​python?

Я ищу пример использования функции OpenCV ConnectedComponentsWithStats() в python, обратите внимание, что это доступно только с OpenCV 3 или новее. Официальная документация показывает только API для С++, хотя функция существует при компиляции для python. Я не мог найти его нигде в Интернете.

Ответы

Ответ 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 каждого центроида. Строка в этой матрице соответствует номеру метки.