查詢並繪製輪廓 OpenCV 筆記XX

2021-08-21 12:27:43 字數 2960 閱讀 7042

好久沒有更新了,原諒自己放了個假最近又在趕進度,所以。。。更新的內容是很靠後的第八章,因為最近工作要用就先跳了,後面會更新筆記編號。。。加油加油!

在二值影象中尋找輪廓

void cv::findcontours    (    inputoutputarray     image,

outputarrayofarrays contours,

outputarray hierarchy,

int mode,

int method,

point offset = point()

)

contours: 檢測到的輪廓,每個輪廓儲存為乙個點向量,即用point型別的vector,例如可為型別vector>。

hierarchy: 可選的輸出向量,包含影象的拓撲資訊。 每個輪廓contours[i],

mode: 檢索模式,可選模式包括

method: 輪廓的近似辦法,包括

offset: 每個輪廓點的可選偏移量,預設point(), 當roi影象中找出的輪廓需要在整個圖中進行分析時,可利用這個引數。

繪製輪廓

void cv::drawcontours    (    inputoutputarray     image,

inputarrayofarrays contours,

int contouridx,

const scalar & color,

int thickness = 1,

int linetype = line_8,

inputarray hierarchy = noarray(),

int maxlevel = int_max,

point offset = point()

)

hierarchy: 可選層次結構

maxlevel: 繪製輪廓的最大等級

offset: 可選輪廓偏移引數

事例程式1

事例程式2

#include #include #include #include #define window_name1 "original image"

#define window_name2 "contours"

// global variables

cv::mat g_srcimage;

cv::mat g_grayimage;

cv::mat g_cannymat_output;

int g_nthresh = 80;

int g_nthresh_max = 255;

cv::rng g_rng(12345);

std::vector> g_vcontours;

std::vectorg_vhierarchy;

// functions

void on_threshchange(int, void*);

// main

int main( int argc, char** argv )

// convert to gray-scale and blur

cv::cvtcolor(g_srcimage, g_grayimage, cv::color_bgr2gray);

cv::blur(g_grayimage, g_grayimage, cv::size(3,3));

// create window

cv::namedwindow(window_name1, cv::window_autosize);

imshow(window_name1, g_srcimage);

// create tracker bar

cv::createtrackbar("canny threshold", window_name1, &g_nthresh, g_nthresh_max, on_threshchange);

on_threshchange(0, 0);

cv::waitkey(0);

return 0;

}void on_threshchange(int, void*)

{ cv::canny(g_grayimage, g_cannymat_output, g_nthresh, g_nthresh*2, 3);

cv::mat drawing = cv::mat::zeros(g_cannymat_output.size(), cv_8uc3);

for (int i = 0; i

結果圖:

OpenCV之查詢並繪製輪廓

在opencv中,用findcontours 函式從二值圖中查詢輪廓。原型 void findcontourd inputarray image,outputarray contours,outputarray hierarchy,int mode,int mrthod,point offset p...

opencv之輪廓的查詢與繪製

1 什麼是輪廓 輪廓可以簡單的認為是將連續的點 連著邊界 連在一起的曲線,具有相同的顏色或者灰度,提取輪廓就是提取這些具有相同顏色或者灰度的曲線,或者說是連通域,輪廓在形狀分析和物體的檢測和識別中非常有用 注意事項 1.為了更加準確,要使用二值化影象,在尋找輪廓之前,要進行閾值化處理或者canny邊...

opencv尋找輪廓 繪製輪廓 輪廓層級原理

void findcontours inputoutputarray image,outputarrayofarrays contours,outputarray hierarchy,int mode,int method,point offset point 引數image inputarray型...