zoukankan      html  css  js  c++  java
  • 形态学对象的提取与屏蔽 (开操作和闭操作)

    一、开操作

    代码如下:

    #include <opencv2/opencv.hpp>
    #include <iostream>
    #include <math.h>
    
    using namespace cv;
    int main(int argc, char** argv) {
        Mat src, dst;
        src = imread("L:opencv_picture/11.png");
        if (!src.data) {
            printf("could not load image...
    ");
        }
        namedWindow("input image", CV_WINDOW_AUTOSIZE);
        imshow("input image", src);
        char output_title[] = "morphology demo";
        namedWindow(output_title, CV_WINDOW_AUTOSIZE);
    
        Mat kernel = getStructuringElement(MORPH_RECT, Size(11, 11), Point(-1, -1));
        //getStructuringElement参数:1.形状矩形  2.形态学锚点尺寸  3.默认Point(-1, -1)锚点中心
        morphologyEx(src, dst, CV_MOP_OPEN, kernel);
        //morphologyEx参数:1.输入图像 2.输出图像 3.形态学操作 4.Mat结构元素kernel
        imshow(output_title, dst);
    
        waitKey(0);
        return 0;
    }

    结果:

      

     

    二、闭操作

     

     代码入下:

    #include <opencv2/opencv.hpp>
    #include <iostream>
    #include <math.h>
    
    using namespace cv;
    int main(int argc, char** argv) {
        Mat src, dst;
        //1.
        //src = imread("L:opencv_picture/11.png");
        //2.
        src = imread("L:opencv_picture/12.png");
        if (!src.data) {
            printf("could not load image...
    ");
        }
        namedWindow("input image", CV_WINDOW_AUTOSIZE);
        imshow("input image", src);
        char output_title[] = "morphology demo";
        namedWindow(output_title, CV_WINDOW_AUTOSIZE);
    
        Mat kernel = getStructuringElement(MORPH_RECT, Size(11, 11), Point(-1, -1));
        //getStructuringElement参数:1.形状矩形  2.形态学锚点尺寸  3.默认Point(-1, -1)锚点中心
        
        //1.开操作:
        //morphologyEx(src, dst, CV_MOP_OPEN, kernel); 
        //morphologyEx参数:1.输入图像 2.输出图像 3.形态学操作 4.Mat结构元素kernel
    
        //2.闭操作:
        morphologyEx(src, dst, CV_MOP_CLOSE, kernel);
    
        imshow(output_title, dst);
    
        waitKey(0);
        return 0;
    }

    结果:

          

     三、形态学梯度

     代码:

    #include <opencv2/opencv.hpp>
    #include <iostream>
    #include <math.h>
    
    using namespace cv;
    int main(int argc, char** argv) {
        Mat src, dst;
        //1.
        //src = imread("L:opencv_picture/11.png");
        //2.
        //src = imread("L:opencv_picture/12.png");
        //3.
        src = imread("L:opencv_picture/13.jpg");
    
        if (!src.data) {
            printf("could not load image...
    ");
        }
        namedWindow("input image", CV_WINDOW_AUTOSIZE);
        imshow("input image", src);
        char output_title[] = "morphology demo";
        namedWindow(output_title, CV_WINDOW_AUTOSIZE);
    
        Mat kernel = getStructuringElement(MORPH_RECT, Size(11, 11), Point(-1, -1));
        //getStructuringElement参数:1.形状矩形  2.形态学锚点尺寸  3.默认Point(-1, -1)锚点中心
        
        //1.开操作:
        //morphologyEx(src, dst, CV_MOP_OPEN, kernel); 
        //morphologyEx参数:1.输入图像 2.输出图像 3.形态学操作 4.Mat结构元素kernel
    
        //2.闭操作:
        //morphologyEx(src, dst, CV_MOP_CLOSE, kernel);
    
        //3.形态学梯度:
        morphologyEx(src, dst,CV_MOP_GRADIENT , kernel);
    
        imshow(output_title, dst);
    
        waitKey(0);
        return 0;
    }

    结果:

        

    四、顶帽

     代码如下:

    #include <opencv2/opencv.hpp>
    #include <iostream>
    #include <math.h>
    
    using namespace cv;
    int main(int argc, char** argv) {
        Mat src, dst;
        //1.
        //src = imread("L:opencv_picture/11.png");
        //2.
        //src = imread("L:opencv_picture/12.png");
        //3.
        //src = imread("L:opencv_picture/13.jpg");
        //4.
        src = imread("L:opencv_picture/11.png");
    
        if (!src.data) {
            printf("could not load image...
    ");
        }
        namedWindow("input image", CV_WINDOW_AUTOSIZE);
        imshow("input image", src);
        char output_title[] = "morphology demo";
        namedWindow(output_title, CV_WINDOW_AUTOSIZE);
    
        Mat kernel = getStructuringElement(MORPH_RECT, Size(11, 11), Point(-1, -1));
        //getStructuringElement参数:1.形状矩形  2.形态学锚点尺寸  3.默认Point(-1, -1)锚点中心
        
        //1.开操作:
        //morphologyEx(src, dst, CV_MOP_OPEN, kernel); 
        //morphologyEx参数:1.输入图像 2.输出图像 3.形态学操作 4.Mat结构元素kernel
    
        //2.闭操作:
        //morphologyEx(src, dst, CV_MOP_CLOSE, kernel);
    
        //3.形态学梯度:
        //morphologyEx(src, dst,CV_MOP_GRADIENT , kernel);
    
        //4.顶帽:
        morphologyEx(src, dst,CV_MOP_TOPHAT , kernel);
        imshow(output_title, dst);
    
        waitKey(0);
        return 0;
    }

    结果:

    五、黑帽

     代码如下:

    #include <opencv2/opencv.hpp>
    #include <iostream>
    #include <math.h>
    
    using namespace cv;
    int main(int argc, char** argv) {
        Mat src, dst;
        //1.
        //src = imread("L:opencv_picture/11.png");
        //2.
        //src = imread("L:opencv_picture/12.png");
        //3.
        //src = imread("L:opencv_picture/13.jpg");
        //4. 
        //src = imread("L:opencv_picture/11.png");
        //5.
        src = imread("L:opencv_picture/12.png");
    
    
        if (!src.data) {
            printf("could not load image...
    ");
        }
        namedWindow("input image", CV_WINDOW_AUTOSIZE);
        imshow("input image", src);
        char output_title[] = "morphology demo";
        namedWindow(output_title, CV_WINDOW_AUTOSIZE);
    
        Mat kernel = getStructuringElement(MORPH_RECT, Size(11, 11), Point(-1, -1));
        //getStructuringElement参数:1.形状矩形  2.形态学锚点尺寸  3.默认Point(-1, -1)锚点中心
        
        //1.开操作:
        //morphologyEx(src, dst, CV_MOP_OPEN, kernel); 
        //morphologyEx参数:1.输入图像 2.输出图像 3.形态学操作 4.Mat结构元素kernel
    
        //2.闭操作:
        //morphologyEx(src, dst, CV_MOP_CLOSE, kernel);
    
        //3.形态学梯度:
        //morphologyEx(src, dst,CV_MOP_GRADIENT , kernel);
    
        //4.顶帽:
        //morphologyEx(src, dst,CV_MOP_TOPHAT , kernel);
    
        //5.黑帽:
        morphologyEx(src, dst,CV_MOP_BLACKHAT , kernel);
    
        imshow(output_title, dst);
    
        waitKey(0);
        return 0;
    }

    原图:                        闭操作图:

               

     黑帽为两图之差:

     

  • 相关阅读:
    JAVA 使用 POI进行读取Excel表格示例
    问题解决:Maven execution terminated abnormally (exit code 1)
    oracle总结: INTERVAL DAY TO SECOND, 但却获得 NUMBER
    SpringMvc返回JSON出现"$.result.currentLevel"
    Spring+SpringMVC+mybatis maven pom文件
    redis在Linux上的安装
    Jsoup访问https网址异常SSLHandshakeException(已解决)
    不同版本2.5的Servlet web.xml 头信息
    Spring管理事物两种方式
    Error:too many padding sections on bottom border.
  • 原文地址:https://www.cnblogs.com/Jack-Elvis/p/11505680.html
Copyright © 2011-2022 走看看