OpenCV 4.12.0
开源计算机视觉
加载中...
搜索中...
无匹配项
为轮廓创建边界框和圆

上一个教程: 凸包
下一个教程: 为轮廓创建旋转边界框和椭圆

原始作者Ana Huamán
兼容性OpenCV >= 3.0

目标

在本教程中,您将学习如何

理论

代码

解释

主函数相当简单,正如注释中所示,我们执行以下操作:

  • 打开图像,将其转换为灰度并进行模糊处理以去除噪声。
  • 创建一个标题为“Source”的窗口并在其中显示源文件。
  • source_window上创建一个跟踪条,并为其分配一个回调函数。通常,回调函数用于响应某种信号,在本例中是跟踪条状态的变化。有必要显式一次性调用thresh_callback,以便“Contours”窗口与“Source”窗口同时显示。

回调函数完成所有有趣的工作。

  • 查找轮廓并将其保存到向量contourhierarchy中。
  • 对于每个找到的轮廓,我们现在以±3的精度应用多边形近似,并声明曲线必须是闭合的。之后,我们为每个多边形找到一个边界矩形并将其保存到boundRect。最后,我们为每个多边形找到一个最小外接圆并将其保存到centerradius向量中。

我们找到了所有需要的东西,现在只需要绘制。

  • 创建新的Mat,由无符号8位字符填充零。它将包含我们所有的绘图(矩形和圆)。
  • 对于每个轮廓:选择一个随机颜色,绘制轮廓、边界矩形和最小外接圆。
  • 显示结果:创建一个新窗口“Contours”并显示我们添加到绘图中的所有内容。

结果

就是这样: