2024-10-03 21:24:26 发布
网友
我正在对一个图像进行阈值化,这会给我一些白色区域。我有一个像素位置,位于这些区域之一。我使用opencvconnectedComponentsWithStats来获取这些区域,然后找出像素是否在这些区域中的任何一个。我怎么能做到呢?在
connectedComponentsWithStats
在这个问题上,有没有更好的方法可以找到像素所在的阈值区域?在
您可以使用pointPolygonTest函数检查一个点是否在轮廓内。在
因此,在阈值化之后,使用findContours函数找到图像中的轮廓。然后可以将轮廓和点传递给此函数,以检查点是否在区域内。在
findContours
由于您有连接的组件和统计信息(使用connectedComponentsWithStats找到的),因此可以使用this方法更快地进行测试。在
numLabels, labelImage, stats, centroids = cv2.connectedComponentsWithStats(thresh, connectivity, cv2.CV_32S)
numLabels=阈值图像中的标签或区域数
labelImage=矩阵或图像包含代表每个区域的唯一标签(1、2、3..),在labelImage中背景表示为0。在
stats=stats是一个包含区域信息的统计矩阵。在
质心=每个区域的质心。在
在您的例子中,您可以使用labelImage找出像素坐标上的唯一标签值,以找出它所在的区域。在
您可以使用pointPolygonTest函数检查一个点是否在轮廓内。在
因此,在阈值化之后,使用
findContours
函数找到图像中的轮廓。然后可以将轮廓和点传递给此函数,以检查点是否在区域内。在由于您有连接的组件和统计信息(使用
connectedComponentsWithStats
找到的),因此可以使用this方法更快地进行测试。在numLabels=阈值图像中的标签或区域数
labelImage=矩阵或图像包含代表每个区域的唯一标签(1、2、3..),在labelImage中背景表示为0。在
stats=stats是一个包含区域信息的统计矩阵。在
质心=每个区域的质心。在
在您的例子中,您可以使用labelImage找出像素坐标上的唯一标签值,以找出它所在的区域。在
相关问题 更多 >
编程相关推荐