OpenCV/第5章 图像形态学自定义的核
//author:rorger
//time:2010-10-18 21:59:02
OpenCV提供了函数创建IplConvKernel核,
相关函数:
/* creates structuring element used for morphological operations */
CVAPI(IplConvKernel*) cvCreateStructuringElementEx(
int cols, int rows, int anchor_x, int anchor_y,
int shape, int* values CV_DEFAULT(NULL) );
shape取值有:
CV_SHAPE_RECT
CV_SHAPE_CROSS
CV_SHAPE_ELLIPSE
CV_SHAPE_CUSTOM
和函数:
/* releases structuring element */
CVAPI(void) cvReleaseStructuringElement( IplConvKernel** element );
来创建和释放核;
关于函数的具体介绍请参考相关书籍;
这里只演示最基本的使用:
int main(int argc, char ** argv)
{
cvNamedWindow("image");
IplImage * src = cvLoadImage(argv[1], 0);
if (src ==NULL)
{
printf("Error to load image");
exit(0);
}
IplImage * img=cvCreateImage(cvGetSize(src), 8, 1);
IplConvKernel * kernelb=cvCreateStructuringElementEx(
10,
10,
5,
5,
CV_SHAPE_RECT,
NULL);
cvErode(src,img,kernelb);
cvShowImage("image", img);
cvWaitKey(0);
//膨胀
cvDilate(src,img,kernelb);
cvShowImage("image", img);
cvWaitKey(0);
cvReleaseStructuringElement(&kernelb);
cvReleaseImage(&src);
cvReleaseImage(&img);
cvDestroyAllWindows();
return 0;
}
为了与之前的腐蚀和膨胀的明显区别,我把核的范围调整10X10的大小,取(5,5)的参考点;
如下图很明显可以看出自定义核的作用