zoukankan      html  css  js  c++  java
  • 腐蚀函数cvErode

    cvErode,是opencv库中的一个函数,对输入图像进行腐蚀操作,可以消除较小的点如噪音

    如:

    cvErode(pCutFrImg, pCutFrImg, 0, 1);//对输入图像进行腐蚀操作

    函数特点

    1.函数形式:void cvErode( const CvArr* src, CvArr* dst, IplConvKernel* element=NULL, int iterations=1 );

    2.函数可以是本地操作,不需另外开辟存储空间的意思。腐蚀可以重复进行 (iterations) 次. 对彩色图像,每个彩色通道单独处理。

    3.一般和cvDilate一起使用;void cvDilate( const CvArr* src, CvArr* dst, IplConvKernel* element=NULL, int iterations=1 );

    一起使用的效果是:
    cvErode()腐蚀后cvDilate()膨胀,叫作开操作,那些离散点或游丝线、毛刺就被过滤,
    cvDilate()膨胀后cvErode()腐蚀,叫作闭操作,那些断裂处就被缝合。
     
    函数参数说明:
    src:输入图像.
    dst:输出图像.
    element:用于腐蚀的结构元素。若为 NULL, 则使用 3×3 长方形的结构元素
    iterations:腐蚀的次数
    函数 cvErode 对输入图像使用指定的结构元素进行腐蚀,该结构元素决定每个具有最小值像素点的邻域形状:
    dst=erode(src,element): dst(x,y)=min((x',y') in element))src(x+x',y+y')
     
     下面的程序将演示这两个函数,腐蚀和膨胀的过程:
     1 #include "cv.h"
     2 #include "cxcore.h"
     3 #include "highgui.h"
     4 int main(int argc,char** argv)
     5 {
     6     if(argc<2)
     7         return 0;
     8     int a=1;
     9     int eIter=1,dIter=1,exitFlag=1;
    10     IplImage *image,*image1,*image2;
    11     image = cvLoadImage(argv[1]);
    12     image1 = cvCreateImage(cvSize(image->width,image->height),8,1);
    13     image2 = cvCreateImage(cvSize(image->width,image->height),8,1);
    14     
    15     cvCvtColor(image,image1,CV_RGB2GRAY);
    16     cvCvtColor(image,image2,CV_RGB2GRAY);
    17     cvNamedWindow("image",1);
    18     cvShowImage("image",image);
    19 
    20     cvNamedWindow("Select",1);
    21     cvCreateTrackbar("eIterations","Select",&eIter,20,0);
    22     cvCreateTrackbar("dIterations","Select",&dIter,20,0);
    23     cvNamedWindow("Erode",1);
    24     cvNamedWindow("Dilate",1);
    25     cvShowImage("Erode",image1);
    26     cvShowImage("Dilate",image2);
    27     cvWaitKey(0);
    28     
    29    while(1)
    30    {
    31        //腐蚀,消除细小物质
    32     cvErode(image1,image1,0,2);
    33     
    34     cvShowImage("Erode",image1);
    35     std::cout<<"Erode"<<std::endl;
    36 
    37     a=cvWaitKey(0);
    38     if((char) a == 'q')
    39         break;
    40    }
    41  
    42    cvCopy(image1,image2);
    43    a=1;
    44    while(1)
    45    {
    46     //腐蚀,填充物体内细小物质
    47     cvDilate(image2,image2,0,1);
    48 
    49     cvShowImage("Dilate",image2);
    50         std::cout<<"Dilate"<<std::endl;
    51 
    52         a=cvWaitKey(0);
    53 
    54     if((char) a == 'q')
    55         break;
    56    }
    57     return 0;
    58 }
    
    
     
  • 相关阅读:
    【二分】Urozero Autumn Training Camp 2016 Day 5: NWERC-2016 Problem C. Careful Ascent
    【强连通分量缩点】【DFS】【动态规划】Urozero Autumn Training Camp 2016 Day 5: NWERC-2016 Problem B. British Menu
    【Splay】Codeforces Round #424 (Div. 1, rated, based on VK Cup Finals) B. Cards Sorting
    【Splay】bzoj3223 Tyvj 1729 文艺平衡树
    【Splay】bzoj3224 Tyvj 1728 普通平衡树
    【LIS】【递推】Gym
    【DFS】【枚举】Gym
    【递推】【DFS】【枚举】Gym
    【推导】Codeforces Round #424 (Div. 1, rated, based on VK Cup Finals) A. Office Keys
    【概率dp】【数学期望】Gym
  • 原文地址:https://www.cnblogs.com/yangxuebing/p/7307921.html
Copyright © 2011-2022 走看看