1.7opencv学习笔记形态学操作

一.形态学操作:
(1).开操作(open):先腐蚀后膨胀,可以去掉小的对象。
图1
(2).闭操作(close):先腐蚀后膨胀,可以填充小的洞(fill hole)
图2
(3).形态学梯度(Morphological Gradient):膨胀减去腐蚀,又称为基本梯度(其它还包括-内部梯度、方向梯度)
图3
(4).顶帽 (top hat):顶帽 是原图像与开操作之间的差值图像
(5).黑帽:黑帽是闭操作图像与源图像的差值图像
二.实现代码

#include 
#include 
#include 

using namespace cv;
int main(int argc, char** argv) {
	Mat src, dst;
	src = imread("E:/15.JPG");
	if (!src.data) {
		printf("could not load image...\n");
	}
	namedWindow("input image", CV_WINDOW_AUTOSIZE);
	imshow("input image", src);

	Mat kernel = getStructuringElement(MORPH_RECT, Size(11, 11), Point(-1, -1));
	//开运算,第一个参数是输入图像,第二个图像是输出图像,第三个参数形态学类型,第四个参数是j结构元素
	morphologyEx(src, dst, CV_MOP_OPEN, kernel);
	namedWindow("open", CV_WINDOW_AUTOSIZE);
	imshow("open", dst);
	//形态学操作
	morphologyEx(src, dst, CV_MOP_GRADIENT, kernel);
	namedWindow("gradient", CV_WINDOW_AUTOSIZE);
	imshow("gradient", dst);
      //闭运算
	morphologyEx(src, dst, CV_MOP_CLOSE, kernel);
	namedWindow("close", CV_WINDOW_AUTOSIZE);
	imshow("close", dst);
	//礼帽
	morphologyEx(src, dst, CV_MOP_TOPHAT, kernel);
	namedWindow("tophat", CV_WINDOW_AUTOSIZE);
	imshow("tophat", dst);
	//黑帽
	morphologyEx(src, dst, CV_MOP_BLACKHAT, kernel);
	namedWindow("blachat", CV_WINDOW_AUTOSIZE);
	imshow("blachat", dst);

	waitKey(0);
	return 0;
}

你可能感兴趣的:(Opencv)