gpt4 book ai didi

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

转载 作者:太空宇宙 更新时间:2023-11-03 21:08:40 25 4
gpt4 key购买 nike

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

black and white image

代码:

cv2.findContours(mat.copy(), cv2.RETR_LIST, cv2.CHAIN_APPROX_SIMPLE)
areas = [(lambda c: cv2.moments(c)['m00'])(c) for c in contours]

返回 [255.0, 482.5, 6480.5, 6230.0, 15531.0, 19810.0],但我只想得到 3 个值,因为有 3 个单独的 blob。

最佳答案

最好的选择似乎是使用 connectedComponentsWithStats来自 OpenCV 3.0。

例子:

# find all blobs and label them
n, labels, stats, _ = cv2.connectedComponentsWithStats(mat)
  • n - 不同 blob 的数量
  • labels - 与 mat 形状相同的矩阵,包含每个点的标签
  • stats - 每个 blob 按以下顺序统计:
    • CC_STAT_LEFT 最左边的 (x) 坐标,它是边界框在水平方向上的包含起点。
    • CC_STAT_TOP 最高 (y) 坐标,它是边界框在垂直方向上的包含起点。
    • CC_STAT_WIDTH 边界框的水平尺寸
    • CC_STAT_HEIGHT 边界框的垂直尺寸
    • CC_STAT_AREA 连通分量的总面积(以像素为单位)

因此,如果您想知道给定 blob 中有多少像素,只需检查等于标签的行和第五列即可。

关于python - 如何计算opencv中每个blob中的白色像素?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/33130315/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com