2

我正在对给我一些白色区域的图像进行阈值处理。我有一个位于这些区域之一的像素位置。我正在使用opencvconnectedComponentsWithStats获取区域,然后查找像素是否在这些区域中的任何一个中。我怎样才能做到这一点?

关于这一点,是否有更好的方法来找到该像素位于哪个阈值区域?

4

2 回答 2

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

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

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

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

质心 = 每个区域的质心。

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

于 2019-10-15T06:18:33.740 回答
0

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

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

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

于 2019-10-15T06:31:04.353 回答