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

2020-03-19  本文已影响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;
}
效果图
上一篇 下一篇

猜你喜欢

热点阅读