美文网首页
去干扰轮廓提取

去干扰轮廓提取

作者: 带着白卡去旅行 | 来源:发表于2018-09-11 16:55 被阅读16次

要求:
提取目标轮廓
排除干扰轮廓
绘制轮廓

遍历器的使用
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);

效果展示:


轮廓筛选后的效果图

相关文章

网友评论

      本文标题:去干扰轮廓提取

      本文链接:https://www.haomeiwen.com/subject/aviugftx.html