原文:http://blog.sina.com.cn/s/blog_790bb7190100qgwq.html 与http://blog.sina.com.cn/s/blog_47522f7f0100j9j3.html
记录一下cvCreateStructuringEleme
1、cvCreateStructuringEleme
1)函数原型:
IplConvKernel* cvCreateStructuringEleme
int shape, int* values=NULL );
2)参数说明
cols :结构元素的列数目
rows :结构元素的行数目
anchor_x :锚点的相对水平偏移量
anchor_y :锚点的相对垂直偏移量
shape :结构元素的形状,可以是下列值:
values 指向结构元素的指针,它是一个平面数组,表示对元素矩阵逐行扫描。(非零点表示该点属于结构元)。如果指针为空,则表示平面数组中的所有元素都是非零的,即结构元是一个长方形(该参数仅仅当shape参数是 CV_SHAPE_CUSTOM 时才予以考虑)。
2、cvMorphologyEx()该函数实现高级形态学变换。
1)函数原型:
void cvMorphologyEx( const CvArr* src, CvArr* dst, CvArr* temp,IplConvKernel* element, int operation, int iterations=1 );
2)参数说明:
src 输入图像.
dst 输出图像.
temp 临时图像,某些情况下需要
element 结构元素
operation 形态操作的类型: CV_MOP_OPEN - 开运算
iterations 膨胀和腐蚀次数.
函数 cvMorphologyEx 在膨胀和腐蚀基本操作的基础上,完成一些高级的形态变换:
3、例子
IplConvKernel *element=cvCreateStructuringEleme
cvMorphologyEx( src, dst, NULL,element, CV_MOP_CLOSE, 8);
cvMorphologyEx(gray,hat,NULL,CV_SHAPE_RECT,CV_MOP_GRADIENT,1);
创建结构元素
IplConvKernel* cvCreateStructuringEleme
int shape, int* values=NULL );
cols
结构元素的列数目
rows
结构元素的行数目
anchor_x
锚点的相对水平偏移量
anchor_y
锚点的相对垂直偏移量
shape
结构元素的形状,可以是下列值:
CV_SHAPE_RECT, 长方形元素;
CV_SHAPE_CROSS, 交错元素 a cross-shaped element;
CV_SHAPE_ELLIPSE, 椭圆元素;
CV_SHAPE_CUSTOM, 用户自定义元素。这种情况下参数 values 定义了 mask,即象素的那个邻域必须考虑。
values
指向结构元素的指针,它是一个平面数组,表示对元素矩阵逐行扫描。(非零点表示该点属于结构元)。如果指针为空,则表示平面数组中的所有元素都是非零的,即结构元是一个长方形(该参数仅仅当shape参数是 CV_SHAPE_CUSTOM 时才予以考虑,即当用户自定义元神时才不为0,一般都为0)。
函数 cv CreateStructuringElement
比如一个图
00000
01110
00000
用一个 cvCreateStructuringEleme
00000
01000
00000
而用一个 cvCreateStructuringEleme
00000
00100
00000
1 0 0
1 1 0
1 1 1
那么应该怎么表示呢?
int mask[9] = {1, 0, 0, 1, 1, 0, 1, 1, 1};
IplConvKernel* strel = cvCreateStructuringEleme