2012-03-18 146 views
-1

我是OpenCv的初学者。我看着opencv morphological dilation filter as maximum filterhow remove binary image noise in opencv?,但我无法准确理解如何使用扩张功能。我想要做一些事情喜欢这幅画与功能:扩展函数

http://up98.org/upload/server1/02/e/q42oinl73zpv7epkccrz.jpg

请你一步解释我一步?我应该使用这个功能吗?

void cvDilate(
    IplImage* src, 
    IplImage* dst, 
    IplConvKernel* B = NULL, 
    int iterations = 1 
) 

如果有,我应该怎么放

IplImage* src 
IplImage* dst 
B 
IplConvKernel* B = NUL 
int iterations = 1 

,而不是如何为它的操作?

我的意思是说,在我调用函数之前应该做什么?

我应该写的.h和.cpp

谢谢!

回答

0

您正在使用普通的C OpenCV API。没有错,但我更喜欢新的C++ API

关于你的问题:

  • IplImage* src - 是源图像,一个你已经有了,并希望它扩张;

  • IplImage* dst - 是目标图像,只应在调用此函数之前声明;

  • IplConvKernel* B - 这是一个有点难以解释在简短的词汇,而是一个微小的图像,通常一个3x3像素,这将是使用,让您的图片“更多的脂肪”的功能,在每个给定数的事情的迭代,请检查here。如果你让它成为一个空指针,默认值将被使用,并且它应该足以满足大多数应用程序;

  • int iterations - 内核将在源图像的轮廓周围使用以使其特征在每次都变得更“胖”的次数;

至于你的形象,实现这一结果,你应该先扩张一定次数的迭代,然后削弱它后面的迭代次数相同。

查看此编号here

它使用新的C++ API,但不应该将问题“翻译”回原来的C API,因为函数的结构完全相同。

希望它有帮助