這兩天用到opencv裡findcontour函數中RETR_TREE模式,對該函數找到的輪廓順序不是很懂,就自己試了一下。
在該模式下查找到的輪廓是以一個樹狀結構存儲的,輪廓的排序是由外側開始查找(圖像的邊界為第0号輪廓),當一個輪廓既有内嵌輪廓,又有同級輪廓時,内嵌輪廓的優先級更高(即内嵌輪廓的contours序号更小),如下圖所示排序。

hierarchy[i]對應于contours[i],hierarchy[i][0]~hierarchy[i][3] 中,0代表平級輪廓的後一個,1代表平級的前一個,2代表子級,3代表父級,沒有的話則值為-1,上圖輪廓可用下圖結構表示:
以1号輪廓為例,hierarchy[1][0]代表4号輪廓,同理4号輪廓的hierarchy[4][1]代表1号輪廓,hierarchy[1][2]代表2号輪廓,hierarchy[1][3]代表0号輪廓。
暫時就了解了這麼多~