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;
}
效果图
网友评论