开运算:可以消除暗背景下的较亮区域
闭运算:可以消除亮背景下的较暗区域
顶帽:用原图减去开运算结果就可以得到原图中灰度较亮的区域,所以又称白顶帽变换。还有一个很重要的作用,就是校正不均匀光照。
底帽:用原图减去闭运算结果就可以得到原图中灰度较暗的区域,所有又称黑底帽变换。
#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;
}