tutorial para descargar connectedcomponentswithstats python opencv connected-components

para - ¿Cómo usar los componentes conectados de openCV con estadísticas en python?



opencv download (3)

Estoy buscando un ejemplo de cómo usar la función ConnectedComponentsWithStats () de OpenCV en python, tenga en cuenta que esto solo está disponible con OpenCV 3 o posterior. La documentación oficial solo muestra la API para C ++, aunque la función existe cuando se compila para python. No pude encontrarlo en ningún lado en línea.


Agregando a la respuesta de Zack Knopp , si está usando una imagen en escala de grises, simplemente puede usar:

import cv2 import numpy as np src = cv2.imread("path//to//image.png", 0) binary_map = (src > 0).astype(np.uint8) connectivity = 4 # or whatever you prefer output = cv2.connectedComponentsWithStats(binary_map, connectivity, cv2.CV_32S)

Cuando intenté usar la respuesta de Zack Knopp en una imagen en escala de grises, no funcionó y esta fue mi solución.


He venido aquí varias veces para recordar cómo funciona y cada vez tengo que reducir el código anterior a:

_, thresh = cv2.threshold(src,0,255,cv2.THRESH_BINARY+cv2.THRESH_OTSU) connectivity = 4 # You need to choose 4 or 8 for connectivity type num_labels, labels, stats, centroids = cv2.connectedComponentsWithStats(thresh , connectivity , cv2.CV_32S)

Con suerte, es útil para todos :)


La función funciona de la siguiente manera:

# 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]

Etiquetas es una matriz del tamaño de la imagen de entrada donde cada elemento tiene un valor igual a su etiqueta.

Estadísticas es una matriz de las estadísticas que calcula la función. Tiene una longitud igual al número de etiquetas y un ancho igual al número de estadísticas. Se puede usar con la documentación de OpenCV para ello:

Salida de estadísticas para cada etiqueta, incluida la etiqueta de fondo, consulte a continuación las estadísticas disponibles. Se accede a las estadísticas a través de estadísticas [etiqueta, COLUMNA] donde las columnas disponibles se definen a continuación.

  • cv2.CC_STAT_LEFT La coordenada más a la izquierda (x) que es el inicio inclusivo del cuadro delimitador en la dirección horizontal.
  • cv2.CC_STAT_TOP La coordenada superior (y) que es el inicio inclusivo del cuadro delimitador en la dirección vertical.
  • cv2.CC_STAT_WIDTH El tamaño horizontal del cuadro delimitador
  • cv2.CC_STAT_HEIGHT El tamaño vertical del cuadro delimitador
  • cv2.CC_STAT_AREA El área total (en píxeles) del componente conectado

Los centroides son una matriz con las ubicaciones x e y de cada centroide. La fila en esta matriz corresponde al número de etiqueta.