我正在对给我一些白色区域的图像进行阈值处理。我有一个位于这些区域之一的像素位置。我正在使用opencvconnectedComponentsWithStats
获取区域,然后查找像素是否在这些区域中的任何一个中。我怎样才能做到这一点?
关于这一点,是否有更好的方法来找到该像素位于哪个阈值区域?
我正在对给我一些白色区域的图像进行阈值处理。我有一个位于这些区域之一的像素位置。我正在使用opencvconnectedComponentsWithStats
获取区域,然后查找像素是否在这些区域中的任何一个中。我怎样才能做到这一点?
关于这一点,是否有更好的方法来找到该像素位于哪个阈值区域?
numLabels, labelImage, stats, centroids = cv2.connectedComponentsWithStats(thresh, connectivity, cv2.CV_32S)
numLabels = 阈值图像中的标签或区域数
labelImage = 包含代表每个区域的唯一标签(1, 2, 3..)的矩阵或图像,背景在 labelImage 中表示为 0。
stats = stats 是一个统计矩阵,其中包含有关区域的信息。
质心 = 每个区域的质心。
在您的情况下,您可以使用 labelImage 找出像素坐标上的唯一标签值,以找出它位于哪个区域。
您可以使用pointPolygonTest函数来检查一个点是否在轮廓内。
findContours
因此,在阈值化后,使用函数找到图像中的轮廓。然后你可以将轮廓和点传递给这个函数来检查点是否在区域内。
由于您拥有连接的组件和统计信息(您使用 找到),因此您可以使用这种方法connectedComponentsWithStats
更快地进行测试。