【问题标题】:How do I get the segmented regions from watershed (OpenCV - C++) for further classification如何从分水岭 (OpenCV - C++) 中获取分段区域以进行进一步分类
【发布时间】:2019-08-13 10:26:41
【问题描述】:

我想获取所有分段区域。我想测试一个特定的段是否是圆形(单元格)。

我可以在这类问题中使用 findcontour 吗?

***编辑

我已经使用轮廓成功地获得了分割区域。关于如何根据形状对这些轮廓进行分类的任何建议。 (去除非圆形轮廓)。

情况如下:

【问题讨论】:

标签: c++ opencv image-segmentation opencv-contour watershed


【解决方案1】:

是的,它应该适合你。如果“wshed”将成为findContours() 函数的输入图像。 如果您认为可能会有嵌套区域,则如果您想以特殊方式处理它们,则应使用CV_RETR_TREE,如果您也想处理区域中的区域,则应使用CV_RETR_LIST,如果您也想处理区域中的区域,则应使用CV_RETR_EXTERNAL您想忽略所有嵌套区域。 有关用法,请参阅 DocExample

编辑 1.0:

回答您的编辑:圆形轮廓将具有一个外部轮廓和一个内部轮廓。因此,如果您使用CV_RETR_TREE 并检查每个轮廓内部是否有另一个轮廓,则它是一个圆形轮廓,您可以保留它并删除所有其他轮廓。用法见here under 4. RETR_TREEhere

编辑 2.0: 看来我误会了你。编辑 1.0 中的“圆形”是指封闭的对象。现在我不明白你对圆形的意思。如果凸度足够,我会带你去convecHullconvexityDefects

如果您确实需要圆形/椭圆形,我会尝试根据轮廓计算椭圆或圆形的参数,并根据这些参数绘制理想的圆形/椭圆形并将轮廓与它进行比较.但也许有更好的方法来做到这一点。在这种情况下,我建议您将其作为一个新问题提出,因为它与此问题的主题没有任何关系。

【讨论】:

    猜你喜欢
    • 2012-01-01
    • 2012-07-11
    • 1970-01-01
    • 1970-01-01
    • 2012-03-03
    • 2013-10-16
    • 1970-01-01
    • 1970-01-01
    • 2020-07-27
    相关资源
    最近更新 更多