好久沒有更新了,原諒自己放了個假最近又在趕進度,所以。。。更新的內容是很靠後的第八章,因為最近工作要用就先跳了,後面會更新筆記編號。。。加油加油!
在二值影象中尋找輪廓
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型...