扩张功能

时间:2012-03-18 12:12:54

标签: c++ opencv

我是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

谢谢!!!

1 个答案:

答案 0 :(得分:0)

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

关于你的问题:

  • IplImage* src - 是源图片,您已经拥有并希望它扩张;

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

  • IplConvKernel* B - 用简短的词来解释这个问题有点困难,但是一个小图像的东西,通常是一个3x3像素,可以用来让你的图像功能“更加肥胖”每个给定的迭代次数,检查here。如果你让它成为一个空指针,将使用默认值,它应该足以满足大多数应用程序;

  • int iterations - 每次在源图像轮廓周围使用内核以使其功能更“胖”的次数;

至于你的图像,为了达到这个结果,你应该首先进行一定数量的迭代扩张,然后将它侵蚀回相同数量的迭代。

检查此代码here

它使用新的C ++ API,但是你不应该将它“转换”回普通的C API,因为函数的结构是完全相同的。

希望有所帮助