How to Find Connected Components in OpenCV?
Date: 2023-04-03 11:15:10
To find the connected components in OpenCV, you can use the cv2.connectedComponents()
function. This function takes a binary image as input and returns a labeled image and the number of labels (connected components) found in the input image.
Here is an example code snippet that demonstrates how to use cv2.connectedComponents()
:
import cv2
import numpy as np
# Read in the input image
img = cv2.imread('input_image.png', 0)
# Threshold the image to obtain a binary image
_, binary_img = cv2.threshold(img, 0, 255, cv2.THRESH_BINARY+cv2.THRESH_OTSU)
# Find the connected components in the binary image
num_labels, labeled_img = cv2.connectedComponents(binary_img)
# Display the labeled image
cv2.imshow('Labeled Image', np.uint8(labeled_img * (255/num_labels)))
cv2.waitKey(0)
In this code, the cv2.threshold()
function is used to obtain a binary image from the input image. Then, cv2.connectedComponents()
is used to find the connected components in the binary image. Finally, the labeled image is displayed using cv2.imshow()
.
Note that the labeled image returned by cv2.connectedComponents()
contains integers representing the labels of each connected component. To display this image as an RGB image, we need to normalize the values and convert them to the uint8
data type. This is done in the cv2.imshow()
function call by multiplying the labeled image by 255/num_labels
.