C++ 如何从分水岭(OpenCV-C+;+;)获取分段区域以进行进一步分类

C++ 如何从分水岭(OpenCV-C+;+;)获取分段区域以进行进一步分类,c++,opencv,image-segmentation,opencv-contour,watershed,C++,Opencv,Image Segmentation,Opencv Contour,Watershed,我想得到所有分割的区域。我想测试一个特定的段是否是圆的(单元格) 我可以在这类问题中使用findingcontour吗 ***编辑 我已经成功地得到了使用轮廓分割的区域。任何关于如何根据形状对这些轮廓进行分类的建议。(拆下非圆形轮廓) 情况如下: 是的,它应该适合你。If“wshed”将是findContours()函数的输入图像。 如果您认为可能会有嵌套区域,则如果要以特殊方式处理它们,应使用CV\u RETR\u树,CV\u RETR\u列表如果要处理区域中的区域,或CV\u RETR\u

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

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

***编辑

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

情况如下:


是的,它应该适合你。If“wshed”将是
findContours()
函数的输入图像。 如果您认为可能会有嵌套区域,则如果要以特殊方式处理它们,应使用
CV\u RETR\u树
CV\u RETR\u列表
如果要处理区域中的区域,或
CV\u RETR\u外部
如果要忽略所有嵌套区域。 有关用法,请参阅和

编辑1.0:

回答您的编辑:圆形轮廓将有一个外轮廓和一个内轮廓。因此,如果您使用
CV_RETR_TREE
并检查每个轮廓,如果其中有另一个轮廓,则它是一个圆形contur,您可以保留它并删除所有其他轮廓。查看或了解用法

编辑2.0: 看来我误解你了。编辑1.0中的“圆形”指的是闭合对象。现在我不是舒尔,你对circular的意思是什么。如果凸性足够的话,我会带你到和


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

试一下,你就会明白!另外,请考虑一下,看看这里的问题。一般来说,为您的具体问题提供一个解决方案。好的,我会尝试一下。非常感谢。