gpt4 book ai didi

python - cv2.connectedComponents 未检测组件

转载 作者:太空宇宙 更新时间:2023-11-03 20:45:51 38 4
gpt4 key购买 nike

我在 Ubuntu、python 2.7 上。使用 OpenCV。

我试图准确理解函数 cv2.connectedComponents 在做什么。这是图像:

enter image description here

代码:

import cv2
import numpy as np

img = cv2.imread('BN.tif', 0)

img = np.uint8(img)
_, markers = cv2.connectedComponents(img)

据我了解,此函数创建了一个与提供的图像大小相同的数组。对于检测到的每个组件,为该组件的所有 (y,x) 位置分配相同的编号。如果背景全为“0”,则圆圈全为“1”,下一个正方形全为“2”,依此类推。最后一个组件应全为“19”。我通过获取定义组件的最高数字来读取组件的数量:

np.amax(markers)

我应该得到 19,但我得到了 1。

我的问题:为什么我只得到 1 个组件?

最佳答案

这是因为 cv2.connectedComponents() 仅将白色部分视为组件。因此,您得到的是单个组件。

你必须颠倒你的形象。您可以使用 cv2.bitwise_not() 函数来执行此操作。

代码:

import cv2
import numpy as np

img = cv2.imread('cc.png', 0)
ret, thresh = cv2.threshold(img, 127, 255, 0)

#---- Inverting the image here ----
img = cv2.bitwise_not(thresh)
_, markers = cv2.connectedComponents(img)
print np.amax(markers)

结果:

19

关于python - cv2.connectedComponents 未检测组件,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/43547540/

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