Python 如何计算opencv中每个blob中的白色像素?

Python 如何计算opencv中每个blob中的白色像素?,python,opencv,Python,Opencv,我正在寻找一种简单而优雅的方法来分别计算每个blob中的白色像素。例如,我有这样的图片: 代码: 返回[255.0482.56280.56230.015531.019810.0],但我只希望有3个值,因为有3个单独的blob。最好的选择似乎是使用OpenCV 3.0 例如: # find all blobs and label them n, labels, stats, _ = cv2.connectedComponentsWithStats(mat) n-不同斑点的数量 标签-具有与垫

我正在寻找一种简单而优雅的方法来分别计算每个blob中的白色像素。例如,我有这样的图片:

代码:


返回[255.0482.56280.56230.015531.019810.0],但我只希望有3个值,因为有3个单独的blob。

最好的选择似乎是使用OpenCV 3.0

例如:

# find all blobs and label them
n, labels, stats, _ = cv2.connectedComponentsWithStats(mat)
  • n-不同斑点的数量
  • 标签-具有与垫子相同形状的矩阵,包含每个点的标签
  • 统计数据-按以下顺序对每个blob进行统计:
    • CC_STAT_LEFT
      最左侧(x)坐标,它是边界框在水平方向上的包容性起点
    • CC_STAT_TOP
      最顶部(y)坐标,它是边界框在垂直方向上的包容性起点
    • CC\u STAT\u WIDTH
      边界框的水平大小
    • CC_STAT_HEIGHT
      边界框的垂直大小
    • CC_STAT_AREA
      连接组件的总面积(以像素为单位)

因此,如果您想知道给定blob中有多少像素,只需检查行是否等于label和第五列。

是否需要每个blob的面积??是什么让你认为只有三个斑点??两个或多个像素一起被视为一个斑点@阿琼什么?这里有3个白色斑点。@dragon7您提出了一个基于
connectedComponentsWithStats
的解决方案。如果可以的话,你能用一个代码示例做出一个新的答案,并将其标记为答案吗?
# find all blobs and label them
n, labels, stats, _ = cv2.connectedComponentsWithStats(mat)