python图像处理 — cv2.connectedComponentsWithStats

本文主要介绍了OpenCV中cv2.connectedComponentsWithStats函数,包括其输入值(如要处理的图片、连通方式)和输出值(连通区域数量、标识、统计信息、质心)。还通过实例详细讲解了如何利用输出的stats和labels处理不规则图形,避免误操作。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

cv2.connectedComponentsWithStats 处理不规则连通区域

函数介绍

retval, labels, stats, centroids = cv2.connectedComponentsWithStats(image, connectivity=8)

输入值:

  • image : 是要处理的图片,官方文档要求是8位单通道的图像。
  • connectivity : 可以选择是4连通还是8连通。

输出值

  • retval : 返回值是连通区域的数量。
  • labels : labels是一个与image一样大小的矩形(labels.shape = image.shape),其中每一个连通区域会有一个唯一标识,标识从0开始。
  • stats :stats会包含5个参数分别为x,y,h,w,s。分别对应每一个连通区域的外接矩形的起始坐标x,y;外接矩形的wide,height;s其实不是外接矩形的面积,实践证明是labels对应的连通区域的像素个数。
  • centroids : 返回的是连通区域的质心。

实例-参数详解

举个栗子

1、 我创建了10x10的图片,其中像素值分别有0和100
在这里插入图片描述

输入的image就是我们这个10x10的图片
如果我们要分析8连通,就令

connectivity=8

2、用 opencv 将图片读入

image = cv2.imread('test1.tif') # 将上述的10*10图片存为test.tif的图片
img = cv2.cvtColor(image,cv2.COLOR_BGR2GRAY) #转灰度
retval, labels, stats, centroids = cv2.connectedComponentsWithStats(img, connectivity=8)

返回值

retval #retval = 3
>>> 3

stats      #我们看出有3个连通区域
            # x   y   w   h  s 
>>> array([[ 0,  0, 10, 10, 76],  # 这代表整个图片,0值也有连通区域
           [ 4,  1,  5,  6, 18],  # 这里18代表有18个像素 下面的6同理
           
评论 10
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

By-Q

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值