2012-03-18 179 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,因爲函數的結構完全相同。

希望它有幫助