這兩天用到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號輪廓。
暫時就瞭解了這麼多~