要求:
提取目标轮廓
排除干扰轮廓
绘制轮廓
遍历器的使用
vector<vector<Point>>::iterator itr;
itr=contours.begin();
area=contourArea(*itr)
部分代码展示:
Mat drawing = Mat::zeros(src.rows,src.cols,CV_8UC3);
vector<vector<Point>>contours;
findContours(canny_src, contours, RETR_EXTERNAL, CHAIN_APPROX_SIMPLE, Point(0, 0));
printf("处理前轮廓数 %d", contours.size());
vector<vector<Point>>::iterator itr;//设置遍历器
itr = contours.begin();
double Area = 0.0;
while (itr!=contours.end())
{
Area = contourArea(*itr);
if (Area<100)
{
itr = contours.erase(itr);
}
else
{
itr++;
}
}
printf("筛选后的轮廓数%d\n", contours.size());
for (int i=0;i<contours.size();i++)
{
drawContours(drawing,contours,i,Scalar(255,255,255));
}
imshow("drawing",drawing);
效果展示:
轮廓筛选后的效果图