cvErode()可以对区域进行缩小
函数原型:
CVAPI(void) cvErode( const CvArr* src, CvArr* dst,
IplConvKernel* element CV_DEFAULT(NULL),
int iterations CV_DEFAULT(1) );
src图像源,dst目标图像,element 核,iterations迭代次数。
测试用图:
程序代码:
#include <highgui.h>
#include<cv.h>
using namespace std;
int main()
{
IplImage *img_in = cvLoadImage("test.jpeg",3);
IplImage *img_erode_1 = cvCreateImage(cvSize(img_in->width,img_in->height),IPL_DEPTH_8U,3);
IplImage *img_erode_2 = cvCreateImage(cvSize(img_in->width,img_in->height),IPL_DEPTH_8U,3);
IplImage *img_erode_3 = cvCreateImage(cvSize(img_in->width,img_in->height),IPL_DEPTH_8U,3);
IplImage *img_erode_4 = cvCreateImage(cvSize(img_in->width,img_in->height),IPL_DEPTH_8U,3);
cvNamedWindow("img_in",CV_WINDOW_AUTOSIZE);
cvShowImage("img_in",img_in);
cvErode(img_in,img_erode_1);//1st
cvNamedWindow("img_erode_1",CV_WINDOW_AUTOSIZE);
cvShowImage("img_erode_1",img_erode_1);
cvErode(img_erode_1,img_erode_2);//2nd
cvNamedWindow("img_erode_2",CV_WINDOW_AUTOSIZE);
cvShowImage("img_erode_2",img_erode_2);
cvErode(img_erode_2,img_erode_1);//3rd
cvErode(img_erode_1,img_erode_2);//4th
cvErode(img_erode_2,img_erode_1);//5th
cvErode(img_erode_1,img_erode_2);//6th
cvErode(img_erode_2,img_erode_3);//7th
cvNamedWindow("img_erode_7a",CV_WINDOW_AUTOSIZE);
cvShowImage("img_erode_7a",img_erode_3);
cvErode(img_in,img_erode_4,0,7);//7th
cvNamedWindow("img_erode_7b",CV_WINDOW_AUTOSIZE);
cvShowImage("img_erode_7b",img_erode_4);
cvWaitKey(0);
cvDestroyAllWindows();
cvReleaseImage(&img_in);
cvReleaseImage(&img_erode_1);
cvReleaseImage(&img_erode_2);
cvReleaseImage(&img_erode_3);
cvReleaseImage(&img_erode_4);
return 0;
}
腐蚀1次:
腐蚀2次:
两种方式腐蚀7次,当然,是库比较方便