OpenCV学习笔记-形态学

OpenCV提供了通用的形态学函数cvMorphologyEx,该函数能够实现开运算,闭运算,形态梯度,礼帽操作,黑帽操作,例题如下:

#include "StdAfx.h"
#include "cv.h"  
#include "highgui.h"  
#include "highgui.h"  

int main(int argc, char ** argv)  
{  
	cvNamedWindow("sourceImage");  
	cvNamedWindow("open");  
	cvNamedWindow("close");  
	cvNamedWindow("gradient"); 
	cvNamedWindow("topHat"); 
	cvNamedWindow("blackHat"); 
	IplImage * src = cvLoadImage("test.bmp");  
	cvShowImage("sourceImage",src);
	IplImage * temp = cvCreateImage(cvGetSize(src), 8,3);  
	IplImage * img=cvCreateImage(cvGetSize(src), 8, 3);  
	cvCopyImage(src,temp);  
	cvCopyImage(src, img);  
	//开运算  
	cvMorphologyEx(  
		src,  
		img,  
		temp,  
		NULL, //default 3*3  
		CV_MOP_OPEN,  
		4);  
	cvShowImage("open", img);  
	//闭运算  
	cvMorphologyEx(  
		src,  
		img,  
		temp,  
		NULL, //default 3*3  
		CV_MOP_CLOSE,  
		4);  
	cvShowImage("close", img);  
	//形态梯度  
	cvMorphologyEx(  
		src,  
		img,  
		temp,  
		NULL, //default 3*3  
		CV_MOP_GRADIENT,  
		3);  
	cvShowImage("gradient", img);  
	//cvWaitKey(0);  

	//"礼帽"  
	cvMorphologyEx(  
		src,  
		img,  
		temp,  
		NULL, //default 3*3  
		CV_MOP_TOPHAT,  
		3);  
	cvShowImage("topHat", img);  
	//cvWaitKey(0);  
	//“黑帽”  
	cvMorphologyEx(  
		src,  
		img,  
		temp,  
		NULL, //default 3*3  
		CV_MOP_BLACKHAT,  
		3);  
	cvShowImage("blackHat", img);  
	cvWaitKey(0);  
	cvReleaseImage(&temp);  
	cvReleaseImage(&src);  
	cvReleaseImage(&img);  
	cvDestroyAllWindows();  
	return 0;  
} 

运行结果为:


参考文献:

1.学习OpenCV,于仕祺,刘瑞祯,清华大学出版社,pp.139-145.

2.http://www710.univ-lyon1.fr/~bouakaz/OpenCV-0.9.5/docs/ref/OpenCVRef_ImageProcessing.htm

3.http://www710.univ-lyon1.fr/~bouakaz/OpenCV-0.9.5/docs/ref/OpenCVRef_ImageProcessing.htm

猜你喜欢

转载自blog.csdn.net/superdont/article/details/6660724