天天看點

opencv學習筆記二十一:輪廓提取

輪廓:一個輪廓代表一系列的點(像素),這一系列的點構成一個有序的點集,是以可以把一個輪廓了解為一個有序的點集。

在opencv中,提供了一個函數傳回一個有序的點集或者有序的點集的集合(指多個有序的點集),函數findContour是從二值圖像中來計算輪廓的,一般使用Canny()函數處理後的圖像,因為這樣的圖像含有邊緣像素。

尋找輪廓的API函數:

findContours(image,vector<vector<Point>> contours,vector<Vec4i>hierarchy,int mode,int method,Point offset = Point(0,0));
           

參數解釋:

(1)image:單通道圖像矩陣,一般是經過canny處理後的二值圖像;

(2)contours:vector<vector<Point>>類型,是一個向量,并且是一個雙重向量,向量内每個元素儲存了一組由連續的Point點構成的點的集合的向量,每一組Point點集就是一個輪廓。有多少輪廓,向量contours就有多少元素;

(3)hierarchy:vector<Vec4i> 類型, 即容器内每一個元素都是一個包含了4個int型變量的向量,向量内每個元素儲存了一個包含4個int整型的數組。向量hiararchy内的元素和輪廓向量contours内的元素是一一對應的,向量的容量相同。hierarchy向量内每一個元素的4個in