OpenCV中的新函数connectedComponentsWithStats使用

本文介绍了OpenCV中用于轮廓分析的新函数connectedComponentsWithStats,对比了旧有的findContours方法,强调了新函数在处理连通区域时的优势。通过示例展示了如何使用connectedComponentsWithStats进行轮廓检测,并解释了stats参数提供的额外信息,如轮廓的x、y、width、height、area等,以及如何根据面积过滤掉小区域。同时,提到了在处理图像前需要将其转换为“黑底白图”的重要性。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

主要内容:对比新旧函数,用于过滤原始图像中轮廓分析后较小的区域,留下较大区域。
关键字    :connectedComponentsWithStats

在以前,常用的方法是 是先调用  cv::findContours()  函数(传入 cv::RETR_CCOMP  标志),随后在得到的连通区域上循环调用  cv::drawContours()
比如,我在GOCVHelper中这样进行了实现
//寻找最大的轮廓
    VP FindBigestContour(Mat src){    
        int imax = 0; //代表最大轮廓的序号
        int imaxcontour = -1; //代表最大轮廓的大小
        std::vector<std::vector<Point>>contours;    
        findContours(src,contours,CV_RETR_LIST,CV_CHAIN_APPROX_SIMPLE);
        for (int i=0;i<contours.size();i++){
            int itmp =  contourArea(contours[i]);//这里采用的是轮廓大小
            if (imaxcontour < itmp ){
                imax = i;
                imaxcontour = itmp;
            }
        }
        return contours[imax];
    }
    //寻找并绘制出彩色联通区域
    vector<VPconnection2(Mat src,Matdraw){    
        draw = Mat::zeros(src.rows,src.cols,CV_8UC3);
        
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值