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//“黑帽”
};
开运算的感性认识:
闭运算的感性认识:
形态梯度
测试用图:
运行结果:
感性认识:可以实现几种使用的处理,如:反色、去掉边缘的模糊点(非常使用,以后再也不用一点一点地用画画板去擦)
函数原型:
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; }
运行结果:
相关文章推荐
- python中使用OpenCV进行人脸检测的例子
- opencv 做人脸识别 opencv 人脸匹配分析
- 使用opencv拉伸图像扩大分辨率示例
- 基于C++实现kinect+opencv 获取深度及彩色数据
- OpenCV 2.4.3 C++ 平滑处理分析
- 利用Python和OpenCV库将URL转换为OpenCV格式的方法
- python结合opencv实现人脸检测与跟踪
- Python实现OpenCV的安装与使用示例
- 在树莓派2或树莓派B+上安装Python和OpenCV的教程
- opencv-python学习一--人脸检测
- 在Ubuntu上安装OpenCV3.0和Python-openCV的经历
- OpenCV配置,从来没有这么简单!
- ubuntu下opencv和qt的安装配置
- OpenCV学习笔记(二十五)——OpenCV图形界面设计Qt+VS2008
- 分享一些OpenCV实现立体视觉的经验
- 关于OpenCv图像变换与基本图形检测
- "应用程序正常初始化失败"-0xc0150002 解决办法
- OpenCV->HSV色彩空间
- opencv 内存泄露
- OpenCV函数cvFindContours