700字范文,内容丰富有趣,生活中的好帮手!
700字范文 > OpenCV图像处理形态学操作腐蚀Erode与膨胀Dilate

OpenCV图像处理形态学操作腐蚀Erode与膨胀Dilate

时间:2021-10-23 10:55:46

相关推荐

OpenCV图像处理形态学操作腐蚀Erode与膨胀Dilate

分享一下我老师大神的人工智能教程!零基础,通俗易懂!/jiangjunshow

也欢迎大家转载本篇文章。分享知识,造福人民,实现我们中华民族伟大复兴!

通俗的说:

膨胀算法使图像扩大一圈。

腐蚀算法使二值图像减小一圈。

腐蚀:删除对象边界的某些像素

膨胀:给图像中的对象边界添加像素

算法:

从图像处理角度看,二值图像的腐蚀和膨胀就是将一个小型二值图(结构元素,一般为3*3大小)在一个大的二值图上逐点移动并进行比较,根据比较的结果作出相应处理而已。

膨胀算法:用3X3的结构元素,扫描二值图像的每一个像素,用结构元素与其覆盖的二值图像做“与”运算,如果都为0,结构图像的该像素为0,否则为1.结果:使二值图像扩大一圈。

腐蚀算法:用3X3的结构元素,扫描二值图像的每一个像素,用结构元素与其覆盖的二值图像做“与”运算,如果都为1,结构图像的该像素为1,否则为0.结果:使二值图像减小一圈。

注意:

OpenCV里面的腐蚀膨胀都是针对 白色 目标区域的。

说,膨胀使图像 变大一圈, 那是指 图像中的 白色目标区域 扩大了一圈~~~~~~腐蚀,亦然。

====================================

代码:

#include <stdio.h>#include <cv.h>#include <highgui.h>#include <cvaux.h> //必须引此头文件

#pragma comment(lib, "cv.lib")#pragma comment(lib, "cxcore.lib")#pragma comment(lib, "highgui.lib")

int main( int argc, char** argv ){ IplImage *img = cvLoadImage("rice.png",0);if(img == NULL){printf("img load failed!\n");return 0;}IplImage *img_erode = cvCreateImage(cvGetSize(img), 8, 1);IplImage *img_dilate = cvCreateImage(cvGetSize(img), 8, 1);cvErode( img,img_erode, NULL,1); //腐蚀cvDilate( img,img_dilate, NULL,1); //膨胀cvNamedWindow("img_erode");cvNamedWindow("img_dilate");cvShowImage("img_erode",img_erode);cvShowImage("img_dilate",img_dilate);cvWaitKey(-1);cvReleaseImage(&img_dilate);cvReleaseImage(&img_erode);cvDestroyAllWindows();return 0;}图示:

附:

Dilate 使用任意结构元素膨胀图像

void cvDilate( const CvArr* src, CvArr* dst, IplConvKernel* element=NULL, int iterations=1 );

src

输入图像.

dst

输出图像.

element

用于膨胀的结构元素。若为 NULL, 则使用 3×3 长方形的结构元素

iterations

膨胀的次数

对彩色图像,每个彩色通道单独处理。

Erode 使用任意结构元素腐蚀图像

void cvErode( const CvArr* src, CvArr* dst, IplConvKernel* element=NULL, int iterations=1 );

src

输入图像.

dst

输出图像.

element

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

iterations

腐蚀的次数

函数 cvErode 对输入图像使用指定的结构元素进行腐蚀,该结构元素决定每个具有最小值象素点的邻域形状:

给我老师的人工智能教程打call!/jiangjunshow

本内容不代表本网观点和政治立场,如有侵犯你的权益请联系我们处理。
网友评论
网友评论仅供其表达个人看法,并不表明网站立场。