开操作:
先腐蚀(erode)后膨胀(dilate)

闭操作:
先膨胀(dilate)后腐蚀(erode)

形态学梯度:
膨胀(dilate) 减去 腐蚀(erode)


顶帽:
原图像 减去 开操作

黑帽:
闭操作 减去 原图像

#include<opencv2/opencv.hpp>
#include<iostream>
using namespace cv;
using namespace std;
Mat src, dst;
int main(int argc, char** argv) {
src = imread("D:/OpenCVprj/image/test3.jpg");
imshow("src", src);
Mat kernel = getStructuringElement(MORPH_RECT, Size(7, 7), Point(-1, -1));
//morphologyEx(src, dst, CV_MOP_CLOSE, kernel);
//morphologyEx(src, dst, CV_MOP_OPEN, kernel);
morphologyEx(src, dst, CV_MOP_GRADIENT, kernel);
//morphologyEx(src, dst, CV_MOP_TOPHAT, kernel);
//morphologyEx(src, dst, CV_MOP_BLACKHAT, kernel);
imshow("dst", dst);
waitKey(0);
return 0;
}