29 輪廓發現

2021-10-04 21:38:37 字數 1482 閱讀 4817

輪廓發現是基於影象邊緣提取的基礎尋找物件輪廓的方法,所以邊緣提取的閾值選定會影響最終輪廓發現結果

cv::

findcontours

(inputoutputarray binimg,

// 輸入影象,非0的畫素被看成1,0的畫素值保持不變,8-bit

outputarrayofarrays contours,

// 全部發現的輪廓物件

outputarray, hierachy// 圖該的拓撲結構,可選,該輪廓發現演算法正是基於影象拓撲結構實現。

int mode,

// 輪廓返回的模式,一般返回乙個輪廓樹

int method,

// 發現方法

point offset=

point()

// 輪廓畫素的位移,預設(0, 0)沒有位移

)

drawcontours

(inputoutputarray binimg,

// 輸出影象

outputarrayofarrays contours,

// 全部發現的輪廓物件

int contouridx// 輪廓索引號

const scalar & color,

// 繪製時候顏色

int thickness,

// 繪製線寬

int linetype ,

// 線的型別line_8

inputarray hierarchy,

// 拓撲結構圖

int maxlevel,

// 最大層數, 0只繪製當前的,1表示繪製繪製當前及其內嵌的輪廓

point offset=

point()

// 輪廓位移,可選

)

大致步驟:

1.輸入影象轉為灰度影象cvtcolor

2.使用canny進行邊緣提取,得到二值影象

3.使用findcontours尋找輪廓

4.使用drawcontours繪製輪廓

void

demo_contours

(int

,void*)

imshow

(output_win,drawimg)

;}

做專案時:一定要使用陣列,不要用vector,速度會很慢

影象的拓撲結構

findcontours()函式

drawcontours()函式

opencv中vector_ vector point,vector_vec4i_,vector_rect_,vector_rotatedrect_含義

(26)輪廓發現

輪廓發現 區別於輪廓和邊緣的概念,輪廓也是有一定梯度層次的,有大的小的不同的輪廓 輪廓發現是基於影象邊緣提取的基礎尋找物件輪廓的方法。所以邊緣提取的閾值選定會影響最終輪廓發現結果。api介紹 findcontours發現輪廓 在灰度影象上進行輪廓發現 cv findcontours inputout...

27 輪廓發現

輪廓發現是基於影象邊緣提取的基礎,尋找物件輪廓的方法。所以邊緣提取的閾值的選定會影響最終輪廓發現的結果。include include include using namespace cv using namespace std int thresholdvlaue 100 int threshol...

opencv學習筆記(15)輪廓發現

參考 python opencv2利用cv2.findcontours 函式來查詢檢測物體的輪廓 試驗用圖 效果 tips 1.如果二值化之後的影象的底色是白色,那麼最後的繪圖會把整張框進去,如圖所示 第三章的邊框是綠色的 這行 因opencv版本而異,opencv2.x和4.x只需要寫成 而ope...