查找并绘制轮廓 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

相关文章
相关标签/搜索