轮廓-Canny边缘检测(彩色图)


 

函数说明:

void Canny( InputArray image, OutputArray edges,double threshold1, double threshold2,int apertureSize = 3, bool L2gradient = false );

 image:输入图像

 edges:输出图像

 threshold1:像素值(最小值)

 threshold2:像素值(最大值)

 apertureSize:算法滤波核大小(3*3)

 L2gradient:是否应用更精确的方式计算

    void findContours( InputArray image, OutputArrayOfArrays contours,OutputArray hierarchy, int mode,int method, Point offset = Point());
       image:原始图像
       contours:检测到的轮廓的点的集合
       hierarchy:记录轮廓之间的关系,四个维度:同级后一个轮廓的序号,同级上一个轮廓的序号,第一个孩子序号,父亲序号
       mode:轮廓的检测方式
            RETR_EXTERNAL仅仅检测外圈轮廓
            RETR_LIST 检测全部轮廓,但是没有层级关系
            RETR_CCOMP 仅仅两层包含关系,即只有外层和内层,假设有夹层,那么夹层也算外层,只要某个轮廓还包含轮廓,都算外部轮廓
            RETR_TREE  检测所有的轮廓,并建议非常完整的层级关系
            RETR_FLOODFILL无描述
      method:轮廓点的存储方式
            CHAIN_APPROX_NONE 相邻的轮廓点坐标只相差一个像素,所以是连续轮廓点
            CHAIN_APPROX_SIMPLE 横,竖对角线段只保存断点数据,比如矩形就只保存四个顶点
            CHAIN_APPROX_TC89_L1
            CHAIN_APPROX_TC89_KCOS

   

    //边缘检测:m_Mat是原始图像,m_Mat_OutPut是用来接收轮廓点的图像
    Canny(m_Mat,m_Mat_OutPut,100,200);


    //轮廓发现:扫描图像将轮廓点集全找出来
    vector<vector<Point>>contours;
    vector<Vec4i>hierachy;
    findContours(m_Mat_OutPut,contours,hierachy,RETR_TREE,CHAIN_APPROX_SIMPLE,Point(0,0));
   
    //遍历轮廓点:将符合条件的轮廓画到原始图像上
    for (int i = 0; i < contours.size(); ++i) {
        double  area = contourArea(contours[i]);//轮廓面积
        double  length = arcLength(contours[i],false);//轮廓长度
        if(area<1000&&length<1000){continue;}
        drawContours(m_Mat,contours,i,Scalar(rand()%255,rand()%255,rand()%255));//
    }

    //图像显示
    QImage img = cvMat_To_Qimage(m_Mat);
    img = img.scaled(ui->label_3->geometry().width(),ui->label_3->geometry().height(),
                     Qt::KeepAspectRatio,Qt::SmoothTransformation);
    ui->label_3->setPixmap(QPixmap::fromImage(img));

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值