(26)輪廓發現

2021-08-21 12:47:43 字數 1479 閱讀 9788

/*

*輪廓發現

* 區別於輪廓和邊緣的概念,輪廓也是有一定梯度層次的,有大的小的不同的輪廓

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

* api介紹:findcontours發現輪廓 在灰度影象上進行輪廓發現

cv::findcontours(

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

outputarrayofarrays contours, // 全部發現的輪廓物件

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

int mode, // 輪廓返回的模式 樹

int method, // 發現方法 一般用簡單相似的方法

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

)api介紹:drawcontours繪製輪廓 把輪廓繪上去

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繪製輪廓

*/#include #include using namespace std;

using namespace cv;

mat src, dst;

int threshold_value = 70;

int threshold_max = 255;

rng rng;

void demo_contours(int, void*);

int main()

void demo_contours(int, void*)

imshow("output", dst);

}

27 輪廓發現

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

29 輪廓發現

輪廓發現是基於影象邊緣提取的基礎尋找物件輪廓的方法,所以邊緣提取的閾值選定會影響最終輪廓發現結果 cv findcontours inputoutputarray binimg,輸入影象,非0的畫素被看成1,0的畫素值保持不變,8 bit outputarrayofarrays contours,全...

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

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