OpenCV 形态学基础

开运算:可以消除暗背景下的较亮区域

闭运算:可以消除亮背景下的较暗区域

顶帽:用原图减去开运算结果就可以得到原图中灰度较亮的区域,所以又称白顶帽变换。还有一个很重要的作用,就是校正不均匀光照。

底帽:用原图减去闭运算结果就可以得到原图中灰度较暗的区域,所有又称黑底帽变换。



#include <iostream>
#include <opencv2/core/core.hpp>
#include <opencv2/highgui/highgui.hpp>
#include <opencv2/opencv.hpp>

using namespace std;
using namespace cv;


// 开操作:先腐蚀后膨胀
// 可以去掉小的对象(对象为白色,背景为黑色)

// 闭操作:先膨胀后腐蚀
// 可以填充小的洞

// 形态学梯度 Morphological Gradient
// 膨胀减去腐蚀 又称为基本梯度(其他还包括 内部梯度、方向梯度)

// 顶帽 top hat
// 原图像与开操作之间的差值图像

// 黑帽 black hat
// 闭操作图像与原图像的差值图像


int main() {
    Mat src1, src2, gray_src, dst;
    src1 = imread("/Users/apple/Desktop/birth.jpg", IMREAD_COLOR);
    //src2 = imread("/Users/apple/Desktop/test2.jpg", IMREAD_COLOR);
    if (src1.empty()) { // if (!src.data())
        cout << "could not load image..." << endl;
        return -1;
    }
    imshow("input", src1);
    
    
//    Mat kernel = getStructuringElement(MORPH_RECT, Size(1, 11));
//    morphologyEx(src1, dst, CV_MOP_DILATE, kernel);
    
    GaussianBlur(src1, dst, Size(99, 3), 100, 1);
    //blur(src1, dst, Size(99, 1));
    
    imshow("output", dst);
    waitKey(0);
    
    return 0;
}


猜你喜欢

转载自blog.csdn.net/ringggr_h/article/details/79998074