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

Opencv对图像做腐蚀和膨胀处理的结果

2015-03-16 14:33 357 查看
在数字图像处理中,图像的形态学变换占有很重要的地位。基本的形态转换就是膨胀和腐蚀,它们能实现多种功能:例如消除噪声、分割出独立的图像元素以及在图像中连接相邻的元素。当然形态学也常备用于求出图像的梯度。


一. 关键函数介绍

下面就介绍OpenCV中对图像进行二值化的关键函数

cvErode()

函数功能:对图像进行腐蚀

函数原型:void
cvErode( const CvArr* src, CvArr* dst, IplConvKernel* element=NULL, int iterations=1 );

函数说明:

src:输入图像.

dst:输出图像.

element:用于腐蚀的结构元素。若为 NULL, 则使用 3×3 长方形的结构元素

iterations:腐蚀的次数

cvDilate()

函数功能:对图像进行膨胀

函数原型:void cvDilate( const CvArr* src, CvArr* dst, IplConvKernel*
element=NULL, int iterations=1 );

函数说明:

src输入图像.

dst输出图像.

element结构元素。若为 NULL, 则使用默认的3×3 长方形,锚点在中间的结构元素,进行膨胀运算

iterations膨胀的次数


二. 示例程序代码

#include <opencv2/opencv.hpp>
#include <iostream>

using namespace std;
using namespace cv;

const char *pstrSrcWindowsTitle = "原图";
const char *pstrDestWindowsTitle_1 = "对原图腐蚀之后";
const char *pstrDestWindowsTitle_2 = "对原图膨胀之后";
const char *pstrDestWindowsTitle_3 = "对腐蚀过的图片作膨胀";

int main(int argc, char *argv[]){
IplImage * src_image = cvLoadImage(argv[1]);//加载图片
cvNamedWindow(pstrDestWindowsTitle_1, CV_WINDOW_AUTOSIZE);//创建窗口用于显示
cvNamedWindow(pstrSrcWindowsTitle, CV_WINDOW_AUTOSIZE);
cvShowImage(pstrSrcWindowsTitle, src_image);//显示原图

//创建两个图片空间用于存放变换过的图片
IplImage * out_image = cvCreateImage(cvGetSize(src_image),
IPL_DEPTH_8U,
3);

IplImage * out_image_2 = cvCreateImage(cvGetSize(src_image),
IPL_DEPTH_8U,
3);

cvDilate(src_image, out_image, NULL, 2);//膨胀处理,并显示
cvShowImage(pstrDestWindowsTitle_2, out_image);

cvErode(src_image, out_image,NULL,2);//腐蚀处理,并显示
cvShowImage(pstrDestWindowsTitle_1, out_image);

cvDilate(out_image, out_image_2, NULL, 2);//对腐蚀过的图像再膨胀
cvShowImage(pstrDestWindowsTitle_3, out_image_2);

waitKey(0);
return 0;
}

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