您的位置:首页 > 运维架构

cvMorphologyEx() 多种图像形态学

2016-01-23 13:23 369 查看
cvMorphologyEx() 

感性认识:可以实现几种使用的处理,如:反色、去掉边缘的模糊点(非常使用,以后再也不用一点一点地用画画板去擦)

函数原型:

CVAPI(void)  cvMorphologyEx( const CvArr* src, CvArr* dst,

                             CvArr* temp, IplConvKernel* element,

                             int operation, int iterations CV_DEFAULT(1) );

src原图像;dst目标图像;temp中间临时图像;element核;operation 五种形态学

/* Morphological operations */

enum

{

    CV_MOP_ERODE        =0,//腐蚀

    CV_MOP_DILATE       =1,//膨胀

    CV_MOP_OPEN         =2,//开运算

    CV_MOP_CLOSE        =3,//闭运算(平滑边缘)

    CV_MOP_GRADIENT     =4,//形态梯度(反色)

    CV_MOP_TOPHAT       =5,//“礼帽”

    CV_MOP_BLACKHAT     =6//“黑帽”

};

开运算的感性认识:



闭运算的感性认识:



形态梯度



测试用图:



#include <highgui.h>
#include<cv.h>
using namespace std;

int main()
{
IplImage *img_in = cvLoadImage("test.jpg",3);
IplImage *img_temp =cvCreateImage(cvSize(img_in->width,img_in->height),IPL_DEPTH_8U,3);
IplImage *img_out_1 =cvCreateImage(cvSize(img_in->width,img_in->height),IPL_DEPTH_8U,3);
IplImage *img_out_2 =cvCreateImage(cvSize(img_in->width,img_in->height),IPL_DEPTH_8U,3);
IplImage *img_out_3 =cvCreateImage(cvSize(img_in->width,img_in->height),IPL_DEPTH_8U,3);
IplImage *img_out_4 =cvCreateImage(cvSize(img_in->width,img_in->height),IPL_DEPTH_8U,3);
IplImage *img_out_5 =cvCreateImage(cvSize(img_in->width,img_in->height),IPL_DEPTH_8U,3);

cvNamedWindow("img_in",CV_WINDOW_AUTOSIZE);
cvShowImage("img_in",img_in);

cvMorphologyEx(img_in,img_out_1,img_temp,NULL,CV_MOP_OPEN);
cvNamedWindow("CV_MOP_OPEN",CV_WINDOW_AUTOSIZE);
cvShowImage("CV_MOP_OPEN",img_out_1);

cvMorphologyEx(img_in,img_out_2,img_temp,NULL,CV_MOP_CLOSE);
cvNamedWindow("CV_MOP_CLOSE",CV_WINDOW_AUTOSIZE);
cvShowImage("CV_MOP_CLOSE",img_out_2);

cvMorphologyEx(img_in,img_out_3,img_temp,NULL,CV_MOP_GRADIENT);
cvNamedWindow("CV_MOP_GRADIENT",CV_WINDOW_AUTOSIZE);
cvShowImage("CV_MOP_GRADIENT",img_out_3);

cvMorphologyEx(img_in,img_out_4,img_temp,NULL,CV_MOP_TOPHAT);
cvNamedWindow("CV_MOP_TOPHAT",CV_WINDOW_AUTOSIZE);
cvShowImage("CV_MOP_TOPHAT",img_out_4);

cvMorphologyEx(img_in,img_out_5,img_temp,NULL,CV_MOP_BLACKHAT);
cvNamedWindow("CV_MOP_BLACKHAT",CV_WINDOW_AUTOSIZE);
cvShowImage("CV_MOP_BLACKHAT",img_out_5);

cvWaitKey(0);
cvDestroyAllWindows();
cvReleaseImage(&img_in);
cvReleaseImage(&img_out_1);
cvReleaseImage(&img_out_2);
cvReleaseImage(&img_out_3);
cvReleaseImage(&img_out_4);
cvReleaseImage(&img_out_5);

return 0;
}


运行结果:

 

     

      



      


       
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签:  OpenCV