OPENCV学习之findContours()轮廓检索模式区别

建立轮廓索引时,按照轮廓从小到大分配索引号

RECT_EXTERNAL只检测最外层轮廓。

RECT_LIST检测所有轮廓。

这两种模式不建立轮廓等级关系,不管轮廓嵌套与否,均按照轮廓大小依次分配索引。

RECT_CCOMP,RECT_TREE检测所有轮廓

RECT_CCOMP在有轮廓嵌套时,无论嵌套个数多少,只建立两级等级关系

RECT_TREE在有轮廓嵌套时,建立多级等级关系

 

例如4个圆形嵌套时

OPENCV学习之findContours()轮廓检索模式区别

轮廓:

OPENCV学习之findContours()轮廓检索模式区别

使用RECT_EXTERNAL时

索引为0

OPENCV学习之findContours()轮廓检索模式区别

使用RECT_LIST时

索引如图:

OPENCV学习之findContours()轮廓检索模式区别

RECT_CCOMP此时索引失意图:

OPENCV学习之findContours()轮廓检索模式区别

 

此时0,2是等级并列关系,1,3分别为这两个等级下的子等级

此种模式下,只能建立两个等级关系,内两个圆为0,1;外两圆为2,3。因为1是0的下一等级,所以在显示索引0时,会把1一起显示。显示索引2的时候也会把3一起显示。可以把这看成树枝,此时有两个大树枝:0,2。这两个大枝子下分别有个小枝子1,3。我现在要把树枝0带走,1因为在0上,所以会被一起顺带拿走。

RECT_TREE此时索引示意图:

OPENCV学习之findContours()轮廓检索模式区别

 

索引0显示

OPENCV学习之findContours()轮廓检索模式区别

索引1显示

OPENCV学习之findContours()轮廓检索模式区别

索引2显示

OPENCV学习之findContours()轮廓检索模式区别

索引3显示

OPENCV学习之findContours()轮廓检索模式区别

上一篇:python调用cv2.findContours时报错:ValueError: not enough values to unpack (expected 3, got 2)


下一篇:findContours()函数