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

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

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

目标

在本教程中,你将了解如何:

理论

代码

解释

主函数相当简单,从这儿我们可以看到评论

  • 打开图像,将其转换为灰度并对其模糊处理以去除噪点。
  • 创建一个标题为“Source”的窗口,并在其中显示源文件。
  • source_window上创建一个轨迹条并给它分配一个回调函数。一般来说,回调函数用于对某种信号做出反应,在我们的例子中是轨迹条的状态改变。显式地一次调用thresh_callback即可同时显示“轮廓”窗口和“源”窗口。

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

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

我们找到了我们需要的所有内容,我们所要做的就是绘制。

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

结果

如下所示: