美文网首页
011-Opencv笔记-开操作-闭操作-形态学梯度-顶帽-黑帽

011-Opencv笔记-开操作-闭操作-形态学梯度-顶帽-黑帽

作者: 赌二八定律 | 来源:发表于2020-03-19 10:20 被阅读0次
    API

    morphologyEx(src, dest, CV_MOP_GRADIENT);

    开操作

    CV_MOP_OPEN, 先腐蚀后膨胀, 可以去掉小白点。

    闭操作

    CV_MOP_CLOSE, 先膨胀后腐蚀,可以填充小黑洞。

    形态学梯度,基本梯度

    CV_MOP_GRADIENT, 膨胀减去腐蚀

    顶帽

    CV_MOP_TOPHAT, 原图像与开操作之间的差值

    黑帽

    CV_MOP_BLACKHAT, 闭操作与原图的差值

    morphologyEx(src, dest, CV_MOP_BLACKHAT, kernel);

    • Mat src – 输入图像
    • Mat dest – 输出结果
    • int OPT – CV_MOP_OPEN/ CV_MOP_CLOSE/ CV_MOP_GRADIENT / >CV_MOP_TOPHAT/ CV_MOP_BLACKHAT 形态学操作类型
      Mat kernel 结构元素
      int Iteration 迭代次数,默认是1
    示例代码
    #include "pch.h"
    #include <opencv2/opencv.hpp>
    #include <iostream>
    #include <math.h>
    
    using namespace cv;
    int main(int argc, char** argv) {
        Mat src, dst;
        src = imread("D:/mor.jpg");
        if (!src.data) {
            printf("could not load image...\n");
        }
        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));
        //开操作
        morphologyEx(src, dst, CV_MOP_OPEN, kernel);
        imshow("open", dst);
        //闭操作
        morphologyEx(src, dst, CV_MOP_CLOSE, kernel);
        imshow("close", dst);
        //黑帽子
        morphologyEx(src, dst, CV_MOP_BLACKHAT, kernel);
        imshow("blackhat", dst);
        //顶帽
        morphologyEx(src, dst, CV_MOP_TOPHAT, kernel);
        imshow("tophat", dst);
        //形态学梯度
        morphologyEx(src, dst, CV_MOP_GRADIENT, kernel);
        imshow("gradient", dst);
    
        waitKey(0);
        return 0;
    }
    
    效果图

    相关文章

      网友评论

          本文标题:011-Opencv笔记-开操作-闭操作-形态学梯度-顶帽-黑帽

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