在關於輪廓的後面幾篇文章中,我們使用了OpenCV 提供的幾個與輪廓相關的函數。但是當我們使用cv2.findContours() 函數在圖像中找輪廓時,我們傳遞了一個參數,輪廓檢索模式 Contour Retrieval Mode。我們通常會傳遞cv2.RETR_LIST 或 cv2.RETR_TREE 而且其運行得很好。但是否有人和我一樣疑惑這些到底意味著什麼呢?
此外,在輸出中,我們也得到了三個數組,第一個是圖像,第二個是輪廓,最後一個是輸出,我們將其命名為hierarchy(本系列前面幾篇文中的代碼經常用到)。但我們從未在任何地方使用過這種層次結構。那麼這個層次結構是什麼,它的作用又是什麼呢?它和前面提到的函數參數又有什麼關係?
通常情況下,我們會使用cv2.findContours() 函數來檢測圖像中的對象。但是有時物體會在不同的位置。但在某些情況下,有一些形狀會存在於其他形狀裏,就像是嵌套的圖形。在這種情況下,我們稱外部形狀為父類 parent,稱內部的為子類 child;這樣,圖像中的輪廓就有了某種聯繫。我們可以指定輪廓是如何相互連接的,比如,這個輪廓是另一個輪廓的子類,或則是它的父類等等。這種關係的表示形式稱為層級/層次結構。