【问题标题】:OpenCV: How to find the area of a specific contourOpenCV:如何找到特定轮廓的区域
【发布时间】:2019-12-07 10:44:39
【问题描述】:

我正在尝试使用轮廓区域过滤从二值图像中去除噪声。我有以下图片:

我使用 OpenCV findContours() 函数找到了轮廓。找到的轮廓在下图中用绿色勾勒出来。

有什么方法可以找到特定轮廓的面积,还是只需要估计面积?例如。是否可以找到红色圈出的轮廓区域?

感谢任何见解。

【问题讨论】:

  • 是的,这是可能的,但首先你需要将轮廓与其他轮廓分离,然后你可以使用cv2.findContours() 来获取区域
  • 分离轮廓是什么意思?以及如何将其隔离?
  • 你需要得到所需轮廓的边界框或者我们可以说你需要得到轮廓的位置。

标签: opencv computer-vision contour


【解决方案1】:

cv::findContours() 返回每​​个轮廓对应的图像坐标数组。

为了找到每个轮廓的面积,您可以遍历检测到的轮廓的数量,并在每个图像坐标数组上使用函数cv::contourArea()

为了找到红色圆圈中的轮廓区域,您可以在循环内部引入检查,如果所选轮廓的中点落在圆圈内,并仅找到该轮廓的区域。

还可能有用的是cv::minEnclosingCircle(),您可以在其中计算适合轮廓点的最小圆的面积。然后,您可以使用此半径的中心并将其与您想要的图像中的位置进行比较。

我希望这会有所帮助。

【讨论】:

    猜你喜欢
    • 2015-06-24
    • 1970-01-01
    • 1970-01-01
    • 2019-10-07
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2012-11-09
    • 2020-07-11
    相关资源
    最近更新 更多