OpenCV 4.13.0
开源计算机视觉库 (Open Source Computer Vision)
正在加载...
正在搜索...
未找到匹配项
创建轮廓的边界框和圆形

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

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

目标

在本教程中,你将学习如何:

理论

代码

说明

主函数非常简单,正如注释所示,我们进行了以下操作:

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

回调函数执行所有有趣的工作。

  • 使用 cv::Canny 检测图像中的边缘。
  • 查找轮廓并将其保存到向量 contourhierarchy 中。
  • 对于找到的每个轮廓,我们现在将其近似为多边形,精度为 +-3,并说明曲线必须是闭合的。之后,我们为每个多边形找到边界矩形并将其保存到 boundRect。最后,我们为每个多边形找到最小外接圆并将其保存到 centerradius 向量中。

我们已经找到了所需的一切,现在只需绘制。

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

结果

这是: