Nuestro grupo de redactores ha estado largas horas buscando para dar soluciones a tu duda, te brindamos la respuesta así que esperamos resultarte de mucha apoyo.
Los documentos de OpenCV 3.0 para connectedComponents()
no mencione Python, pero en realidad está implementado. Consulte, por ejemplo, esta pregunta SO. En OpenCV 3.4.0 y superior, los documentos incluyen las firmas de Python, como se puede ver en los documentos maestros actuales.
La llamada a la función es simple: num_labels, labels_im = cv2.connectedComponents(img)
y puede especificar un parámetro connectivity
para comprobar la conectividad de 4 u 8 vías (predeterminada). La diferencia es que la conectividad de 4 vías solo verifica los píxeles superior, inferior, izquierdo y derecho y ve si se conectan; Comprobaciones de 8 vías si alguno de los ocho píxeles vecinos se conecta. Si tiene conexiones diagonales (como las que tiene aquí), debe especificar connectivity=8
. Tenga en cuenta que solo numera cada componente y les da etiquetas de números enteros crecientes que comienzan en 0. Entonces, todos los ceros están conectados, todos los unos están conectados, etc. Si desea visualizarlos, puede asignar esos números a colores específicos. Me gusta asignarlos a diferentes tonos, combinarlos en una imagen HSV y luego convertirlos a BGR para mostrarlos. Aquí hay un ejemplo con su imagen:
import cv2
import numpy as np
img = cv2.imread('eGaIy.jpg', 0)
img = cv2.threshold(img, 127, 255, cv2.THRESH_BINARY)[1] # ensure binary
num_labels, labels_im = cv2.connectedComponents(img)
def imshow_components(labels):
# 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()
imshow_components(labels_im)
valoraciones y reseñas
Ten en cuenta dar visibilidad a este artículo si lograste el éxito.