查找並繪製輪廓 opencv

findContours():
  第二個參數爲一個檢測到的輪廓,函數調用後的運算結果都放在這裏,每一個輪廓存儲爲1個點向量,用point類型的vector表示。
  第三個參數表示輪廓數量,包含了許多元素。每一個輪廓對應4個hierarchy元素hierarchy[i][0]——hierarchy[i][3],分別表示後一個輪廓,前一個輪廓,父輪廓,內嵌輪廓的索引編號.
drawContours()函數:
  第二個參數:全部的輸入輪廓,用point類型的vector表示。
  第三個參數:輪廓繪製的指示變量
  第四個參數:輪廓的顏色
  第五個參數:輪廓線條的粗細度。如爲FILLED,便會繪製在輪廓內部。
  第六個參數:線條的類型。
  第七個參數:可選的層次結構信息。函數

 1 #include<opencv2/opencv.hpp>
 2 using namespace std;  3 using namespace cv;  4 
 5 int main()  6 {  7     Mat src = imread("D:/meinv.jpg",0);  8     imshow("原圖", src);  9 
10     Mat dstImage = Mat::zeros(src.rows, src.cols, CV_8UC3); 11 
12     src = src > 119; 13     imshow("取閾值化後的原始圖", src); 14 
15     vector<vector<Point>>contours; 16     vector<Vec4i>hierarchy; 17 
18  findContours(src, contours, hierarchy, CV_RETR_CCOMP, CHAIN_APPROX_SIMPLE); 19 
20     int index = 0; 21     for (; index >= 0; index = hierarchy[index][0]) 22  { 23         Scalar color(rand() & 255, rand() & 255, rand() & 255); 24         drawContours(dstImage, contours, index, color, FILLED, 8, hierarchy); 25  } 26     imshow("輪廓圖", dstImage); 27  waitKey(0); 28     return 0; 29 
30 }

取閾值化後的圖:spa

查找並繪製的效果圖:code

相關文章
相關標籤/搜索