• OpenCV——膨胀与腐蚀


    #include<opencv2/core/core.hpp>
    #include<opencv2/imgproc/imgproc.hpp>
    #include<opencv2/highgui/highgui.hpp>
    #include<opencv2/opencv.hpp>
    #include<iostream>
    
    using namespace cv;
    using namespace std;
    
    //全局变量声明********************************
    Mat g_srcImage, g_dstImage;
    int g_nTrackbarNumber = 0;//0表示腐蚀erode,1表示膨胀dilate
    int g_nKernelSize = 3;//核大小
    
    
    
                          //全局函数声明********************************
    void on_TrackbarNumberChange(int, void *);//回调函数
    void on_KernelSizeChange(int, void *);//回调函数
    void Process();
    
    int main()
    {
        //载入原始图片
        g_srcImage = imread("E:\VS2015Opencv\vs2015\project\picture\cat.jpg");
        if (!g_srcImage.data) { printf("读取srcImage错误~! 
    "); return false; }
        //显示原始图片
        namedWindow("image[origin]");
        imshow("image[origin]", g_srcImage);
        //腐蚀/膨胀操作
        namedWindow("image[morphology]");
        createTrackbar("erode/dilate: ", "image[morphology]", &g_nTrackbarNumber, 1, on_TrackbarNumberChange);
        createTrackbar("kernel size: ", "image[morphology]", &g_nKernelSize, 21, on_KernelSizeChange);
        on_TrackbarNumberChange(g_nTrackbarNumber, 0);
        on_KernelSizeChange(g_nKernelSize, 0);
        waitKey();
        return 0;
    }
    
    void Process()
    {
        Mat element = getStructuringElement(MORPH_RECT, Size(g_nKernelSize * 2 + 1, g_nKernelSize * 2 + 1), Point(g_nKernelSize, g_nKernelSize));
        if (g_nTrackbarNumber == 0)
            erode(g_srcImage, g_dstImage, element);
        else
            dilate(g_srcImage, g_dstImage, element);
        imshow("image[morphology]", g_dstImage);
    }
    //回调函数
    void on_TrackbarNumberChange(int, void *)
    {
        Process();
    }
    
    void on_KernelSizeChange(int, void *)
    {
        Process();
    }

    腐蚀和膨胀是针对白色部分(高亮部分而言)。从数学角度来说,膨胀或者腐蚀操作就是将图像(或图像的一部分区域,称之为A)与核(称之为B)进行卷积。
    膨胀就是求局部最大值操作,即计算核B覆盖的区域的像素点的最大值,并把这个最大值赋值给参考点指定的像素,这样就会使图像中的高亮区域逐渐增长。
    腐蚀就是求局部最小值操作,即计算核B覆盖的区域的像素点的最小值,并把这个最小值赋值给参考点指定的像素,这样就会使图像中的高亮区域逐渐减少。
    可参考博文:https://blog.csdn.net/qq_36387683/article/details/80479793

  • 相关阅读:
    [问题2014A05] 复旦高等代数 I(14级)每周一题(第七教学周)
    oracle的相关信息
    进程和线程的区别
    阿里云人脸检测定位
    php与oracle11g经典分页
    Linux 远程复制
    redis的相关信息
    教你编译PHP7 (nginx+mysql+php7)
    nginx的相关信息
    php about session store db or cache
  • 原文地址:https://www.cnblogs.com/fcfc940503/p/11279031.html
Copyright © 2020-2023  润新知