輪廓發現是基於影象邊緣提取的基礎尋找物件輪廓的方法,所以邊緣提取的閾值選定會影響最終輪廓發現結果
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...