黑帽运算,是闭运算的结果图与原图像之差,数学表达式是:
dst = blackhat(src, element) = close(src, element) - src
黑帽运算的效果图突出了比原图轮廓周围更暗的区域,且这一操作与选择的核的大小相关。
代码示例:
#include <iostream>
#include <opencv2/opencv.hpp>
#include <opencv2/core/core.hpp>
#include <opencv2/imgproc/imgproc.hpp>
#include <opencv2/highgui/highgui.hpp>
using namespace std;
using namespace cv;
int main() {
Mat srcImage;
srcImage = imread("/Users/dwz/Desktop/cpp/b.jpg");
Mat element;
element = getStructuringElement(MORPH_RECT, Size(15, 15));
Mat dstImage;
// 第一种实现方法
morphologyEx(srcImage, dstImage, MORPH_BLACKHAT, element);
imwrite("blackhat.jpg", dstImage);
return 0;
}
输入:
输出: