检查像素是否在 opencv 中的连通分量内 python

Check if pixel is inside a connected component in opencv python

我正在对一张图像进行阈值处理,它给我一些白色区域。我有一个位于这些区域之一的像素位置。我正在使用 opencv connectedComponentsWithStats 获取区域,然后查找像素是否位于这些区域中的任何一个。我该怎么做?

关于这一点,有没有更好的方法来找到像素所在的阈值区域?

numLabels, labelImage, stats, centroids = cv2.connectedComponentsWithStats(thresh, connectivity, cv2.CV_32S)

numLabels = 阈值图像中的标签或区域数

labelImage = 包含代表每个区域的唯一标签(1、2、3..)的矩阵或图像,背景在 labelImage 中表示为 0。

stats = stats 是一个统计矩阵,其中包含有关区域的信息。

质心 = 每个区域的质心。

在你的情况下,你可以使用labelImage找出像素坐标上的唯一标签值,找出它位于哪个区域。

您可以使用 pointPolygonTest 函数来检查一个点是否在轮廓内。

因此,在阈值化之后,使用 findContours 函数找到图像中的轮廓。然后你可以将轮廓和点传递给这个函数来检查点是否在区域内。

由于您拥有连接的组件和统计数据(您使用 connectedComponentsWithStats 找到的),您可以使用 方法更快地进行测试。