连通域函数列举:
num_objects, labels = cv2.connectedComponents(image, labels=None, connectivity=None, ltype=None)
cv2.connectedComponentsWithAlgorithm(image, connectivity, ltype, ccltype, labels=None)
num_labels, labels, stats, centroids = cv2.connectedComponentsWithStats(image, labels=None, stats=None, centroids=None, connectivity=None, ltype=None)
cv2.connectedComponentsWithStatsWithAlgorithm(image, connectivity, ltype, ccltype, labels=None, stats=None, centroids=None)
cv2.connectedComponents(image)
num_objects, labels = cv2.connectedComponents(image, labels=None, connectivity=None, ltype=None)
输入参数详解:
image:二值图,即8位单通道图像。具体转二值图方法如下
gray = imread(path,0)
ret, image = cv2.threshold(gray, 0, 255, cv2.THRESH_BINARY_INV + cv2.THRESH_OTSU) # 设定阈值
labels:标记不同连通域后的输出图像,与输入图像具有相同的尺寸。
connectivity:标记连通域时使用的邻域种类,4表示4-邻域,8表示8-邻域。
ltype:输出图像的数据类型,目前支持CV_32S和CV_16U两种数据类型。
输出参数详解:
num_labels:所有连通域的数目
labels:图像上每一像素的标记,用数字1、2、3依次表示不同的连通域
函数解释:
connectedComponents()仅仅创建了一个标记图(图中不同连通域使用不同的标记,和原图宽高一致),connectedComponentsWithStats()可以完成上面任务,除此之外,还可以返回每个连通区域的重要信息–bounding box, area, andcentroid。本文暂时不做解释
参考文章:https://blog.csdn.net/wsp_1138886114/article/details/111355021 https://blog.csdn.net/qq_40784418/article/details/106023288