Opencv實現輪廓提取功能

2022-10-03 23:45:15 字數 1975 閱讀 4790

輪廓:乙個輪廓代表一系列的點(畫素),這一系列的點構成乙個有序的點集,所以可以把乙個輪廓理解為乙個有序的點集。

在opencv中,提供了乙個函式返回乙個有序的點集或者有序的點集的集合(指多個有序的點集),函式findcontour是從二值影象中來計算輪廓的,一般使用canny()函式處理後的影象,因為這樣的影象含有邊緣畫素。

尋找輪廓的api函式:

findcontours(image,vector> contours,vectorhierarchy,int mode,int method,point offset = point(0,0));

引數解釋:

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

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

(3)hierarchy:vector 型別, 即容器內每乙個元素都是乙個包含了4個int型變數的向量,向量內每個元素儲存了乙個包含4個int整型的陣列。向量hiararchy內的元素和輪廓向量contours內的元素是一一對應的,向量的容量相同。hierarchy向量內每乙個元素的4個int型變數——hierarchy[i][0] ~hierarchy[i][3],分別表示第i個輪廓的後乙個輪廓、前乙個輪廓、父輪廓、內嵌輪廓的索引編號。如果當前輪廓沒有對應的後乙個輪廓、前乙個輪廓、父輪廓或內嵌輪廓的話,則hierarchy[i][0] ~hierarchy[i][3]的相應位被設定為預設值-1;

(4)mode:int型別的,定義輪廓的檢索模式:

(5)method:int型別,定義輪廓的近似方法:  

(6) point:偏移量,所有的輪廓資訊相對於原始影象對應點的偏移量,相當於在每乙個檢測出的輪廓點上加上該偏移量,一般不偏移取point(0,0)。

畫輪廓的api函式:

drawcontours(outputimage,contours,hierarchy,int contouridx,color,int thickness ,int linetype,hierarchy = noarray(),int maxlevel = int_max,point offset = point(0,0))

引數解釋:

(1)outputimage: 將輪廓畫在該圖上;

(2)contours:前面尋找到的輪廓;

(3)contouridx:是乙個索引,代表繪製contours中的第幾個輪廓;

(4) color:顏色;

(5)thickness: 線寬;

(6)linetype: 線型;

(7)hierarchy:可選層次資訊結構,這裡面是findcontours所的到的基於contours的層級資訊;

(8)maxlevel: 繪製輪廓的最大等級。如果等級為0,繪製單獨的輪廓。如果為1,繪製輪廓及在其後的相同的級別下輪廓。如果等級為2,繪製所有同級輪廓及所有低一級輪廓,諸此種種。如果值為負數,函式不繪製同級輪廓,但會公升序繪製直到級別為abs(max_level)-1的子輪廓;

(9)offset:照給出的偏移量移動每乙個輪廓點座標.當輪廓是從某些感興趣區域(roi)中提取的然後需要在運算中考慮roi偏移量時,將會用到這個引數。

以上定義摘自該篇部落格:opencv實現輪廓的發現。

#include

using namespace cv;

using namespace std;

int value = 50;

mat src, dst, canny_img;

void callback(int, void*);

int main(int arc, char** ar**)

void callback(int, void*)

imshow("output", dst);

} 執行結果如下:

本文標題: opencv實現輪廓提取功能

本文位址:

利用OpenCV提取目標輪廓

乙個簡單的提取飛機目標影象 二值圖 輪廓的程式 include include include include iplimage g image null iplimage g gray null int g thresh 100 cvmemstorage g storage null char n...

opencv學習 9 輪廓提取

輪廓提取 主要針對二值影象 1 輪廓分為外輪廓和內輪廓 如下圖 外輪廓以c開頭 內輪廓以h開頭 其中img是二值影象,storage是記憶體儲存序列,contours指向儲存的第乙個輪廓,cvmemstorage storage cvcreatememstorage 0 記憶體儲存序列 cvseq ...

OpenCV 輪廓及矩形框提取

參考 opencv3 c 輪廓的提取與篩選 define crt secure no warnings include include include using namespace cv using namespace xfeatures2d using namespace std intmain...