美文网首页
imgproce腐蚀膨胀

imgproce腐蚀膨胀

作者: 带着白卡去旅行 | 来源:发表于2018-09-10 21:39 被阅读9次

    形态学操作

    简单来讲,形态学操作就是基于形状的一系列图像处理操作。通过将 结构元素 作用于输入图像来产生输出图像。

    dilate
    此操作将图像 ,通常为正方形或圆形,进行卷积。 内核 有一个可定义的 锚点, 通常定义为内核中心点。 进行膨胀操作时,将内核划过图像,将内核覆盖区域的最大相素值提取,并代替锚点位置的相素。显然,这一最大化操作将会

    导致图像中的亮区[白色部分]开始”扩展”。

    erode 腐蚀在形态学操作家族里是膨胀操作的孪生姐妹。它提取的是内核覆盖下的相素最小值。进行腐蚀操作时,将内核 划过图像,将内核 覆盖区域的最小相素值提取,并代替锚点位置的相素。以与膨胀相同的图像作为样本,我们使用腐蚀操作。

    导致图像中的暗区[黑色部分]开始”扩展”。

    效果图


    效果图

    代码演示:

    #include<opencv2/opencv.hpp>
    #include<iostream>
    
    using namespace cv;
    using namespace std;
    
    int max_value = 2;
    int erosion_size = 0;
    int erosion_elem = 0;
    int dilate_elem = 0;
    int dilate_size = 0;
    Mat src; Mat  erosion_dst;  Mat dilate_dst;
    
    void myerode(int ,void*)
    {
    
        int erosion_type;
        if (erosion_elem == 0) { erosion_type = MORPH_RECT; }
        else if (erosion_elem == 1) { erosion_type = MORPH_CROSS; }
        else if (erosion_elem == 2) { erosion_type = MORPH_ELLIPSE; }
    
        Mat element = getStructuringElement(erosion_type,
            Size(2 * erosion_size + 5, 2 * erosion_size + 5),
            Point(erosion_size, erosion_size));
    
        /// 腐蚀操作
        erode(src, erosion_dst, element);
        imshow("myerode", erosion_dst);
    
    }
    
    void mydilate(int ,void*)
    {
        int dilate_type;
        if (dilate_elem == 0) { dilate_type = MORPH_RECT; }
        else if (dilate_elem == 1) { dilate_type = MORPH_CROSS; }
        else if (dilate_elem == 2) { dilate_type = MORPH_ELLIPSE; }
    
    
        Mat element = getStructuringElement(dilate_type,
            Size(2 * dilate_size + 5, 2 * dilate_size + 5),
            Point(dilate_size, dilate_size));
    
        //
        dilate(src, dilate_dst, element);
        imshow("mydilate", dilate_dst);
    
    }
    
    
    int main()
    {
        
    src=imread("C:\\Users\\13658\\Desktop\\图片素材\\字母.jpg");
    if(!src.data)
    {
    printf("can not find image file..\n");
    return -1;
    
    }
    
    //erode trackbar
    namedWindow("myerode", CV_WINDOW_AUTOSIZE);
    createTrackbar("value","myerode",&max_value,max_value,myerode);
    //&&max_value起始位置(所以需要赋指针)  max_value valu的刻度最值
    
    namedWindow("src",CV_WINDOW_AUTOSIZE);
    imshow("src",src);
    
    //dilate trackebar
    namedWindow("mydilate", CV_WINDOW_AUTOSIZE);
    createTrackbar("value", "mydilate", &max_value, max_value, mydilate);
    
    
    myerode(0,0);
    mydilate(0,0);
    waitKey(0);
    return 0;
    
    
    
    }
    

    相关文章

      网友评论

          本文标题:imgproce腐蚀膨胀

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