首页 > 解决方案 > 如何使用openCV识别连接组件的最窄部分?

问题描述

给定一个连接组件,例如:

在此处输入图像描述

我想将图像切成最窄部分出现的两个图像,因此输出如下所示:

在此处输入图像描述, 在此处输入图像描述

注意:我添加了更多示例(根据要求):。

1)在此处输入图像描述

在此处输入图像描述 在此处输入图像描述

2)在此处输入图像描述 结果: 在此处输入图像描述, 在此处输入图像描述,

标签: opencvimage-processingcontour

解决方案


一个真正通用且相当稳健的方法是使用侵蚀和流域转换:

  1. 用大小为 k 的方形内核腐蚀二值图像
  2. 检查组件的数量。如果组件数 < 2,则设置 k = k + 1 并从步骤 1 开始重复。

这最终将导致 2 个(或更多)分离的组件。现在:

  1. 使用组件作为您在上一步中收到的标签计算分水岭转换的标记。
  2. 使用标记执行基于标记的分水岭转换并获取不同的组件,包括每个组件的边界。

有关代码参考,您可能需要查看OpenCV 中的这个分水岭分割指南。它们的用例与您自己的应用程序非常相似。


推荐阅读