在 OpenCV 中检测由图案包围的形状
Detecting shapes enclosed by patterns in OpenCV
所以,假设我有大量包含多种形状的图像。在这些图像中,形状中可能有形状,并且有两种类型的形状。有些形状带有图案(如散列标记或对角线),有些形状内部没有图案。
这样的图片可能是这样的:
假设我只想检测侧面有图案的形状,如下所示:
检测到形状后,我想输出一个如下所示的文件:
我最初的解决方案是将图像与 a 3 3 单位矩阵进行卷积,模糊图像,然后尝试从模糊图像中检测斑点。
这不能非常一致地工作,并且在我的具有更困难模式(如交叉影线)的图像中根本不起作用
有人知道我可以用来生成该输出文件的任何好的策略吗?
这是我刚才问的一个问题的后续,
对于我发布的示例,我上次收到的答案非常棒,但我想转到 opencv,由于嵌套形状,上次的答案对于上面的示例失败了。
顺便说一句,有没有更合适的方式让我问这个问题?这与我之前的问题非常相似,但略有不同。我发布这个是因为它与我上一个问题有足够的不同。
因为你的问题没有提供代码,我也提供没有代码的答案:
- 使用霍夫变换检测对角线图案的线条
- 确定对角线图案的端点
- 对于每个轮廓,检查对角线图案的端点是否位于轮廓上(使用 Shapely)
- 对于与对角线图案的端点相交的每个轮廓,填充它
- 对于与对角线图案端点相交的每个轮廓,使用轮廓层次确定所有内部轮廓(子级)并取消选择属于这些内部轮廓的区域。
所以,假设我有大量包含多种形状的图像。在这些图像中,形状中可能有形状,并且有两种类型的形状。有些形状带有图案(如散列标记或对角线),有些形状内部没有图案。
这样的图片可能是这样的:
检测到形状后,我想输出一个如下所示的文件:
我最初的解决方案是将图像与 a 3 3 单位矩阵进行卷积,模糊图像,然后尝试从模糊图像中检测斑点。 这不能非常一致地工作,并且在我的具有更困难模式(如交叉影线)的图像中根本不起作用
有人知道我可以用来生成该输出文件的任何好的策略吗?
这是我刚才问的一个问题的后续,
顺便说一句,有没有更合适的方式让我问这个问题?这与我之前的问题非常相似,但略有不同。我发布这个是因为它与我上一个问题有足够的不同。
因为你的问题没有提供代码,我也提供没有代码的答案:
- 使用霍夫变换检测对角线图案的线条
- 确定对角线图案的端点
- 对于每个轮廓,检查对角线图案的端点是否位于轮廓上(使用 Shapely)
- 对于与对角线图案的端点相交的每个轮廓,填充它
- 对于与对角线图案端点相交的每个轮廓,使用轮廓层次确定所有内部轮廓(子级)并取消选择属于这些内部轮廓的区域。