2013-04-30 28 views
1

我需要修改OpenCV中dft函數內部的一些變量,以使其適合我的應用程序。如何修改opencv中的dft函數?

  1. 哪裏可以找到dft源代碼? 我試過C:\opencv243\build\include\opencv2\core.hpp,但它只給出了dft的描述:

    //!執行正向或反向一維或二維離散傅立葉變換 CV_EXPORTS_W void dft(InputArray src,OutputArray dst,int flags = 0,int nonzeroRows = 0);

  2. 源代碼修改後的過程是什麼?我必須給它一個不同的名字,如dft2()

  3. 哪裏可以保存新功能?

我使用安裝在windows7(32位)上的visual Studio 2010和OpenCV 2.4.3。 請注意,我是OpenCV的新手,剛從MATLAB切換過來。因此,如果您願意提供幫助,我會很感激您能否解釋清楚。

在MATLAB中,我可以簡單地右鍵單擊該函數並查看源文件(僅適用於開源函數)。

由於

Payam

回答

1
  1. DFT功能可以在dxt.cpp源文件中找到。這是位於$ opencv2.3 $ \ OpenCV的\模塊\核心\ SRC

  2. 如果你將它保存爲同樣的功能,你會覆蓋於此功能,將無法使用原有的功能。如果你只是想要你的新功能,然後只是改變代碼,如果你想要原來的功能保存爲另一種,dft2會衝浪,但我建議將它保存爲更有意義的東西,如dft「whathaveIdone」

  3. 要麼創建一些新文件等或只是將它作爲一個新功能與dxt.cpp保存,您將需要創建函數定義等

  4. 爲了找到這些信息我打開了Visual Studio中的OpenCV解決方案,並做了解決方案的廣泛搜索DFT

+0

非常感謝您的快速和完美的答覆。我只是不明白最後一句「只是用dxt.cpp將它保存爲一個新函數」。我可以做修改並保存修改後的版本爲DFT「whathaveIdone」的.cpp在同一目錄dxt.cpp,然後在我的OpenCV的程序說DFT「whathaveIdone」()調用函數? – user2335132 2013-05-01 13:41:51

+0

是的,你可以將它保存在dxt.cpp但是你不會能夠調用它沒有投入dxt.hpp正確的函數定義,或者無論你使用headerfile到您的代碼(文件)dxt.cpp 我建議閱讀連接[這](http://bytes.com/topic/c/answers/713133-callling-function-another-file),並創建與C++標籤的新問題,如果你需要更多的幫助。 G./ – GPPK 2013-05-01 15:08:04

+0

僅供將來參考,一般來說,我們如何找到這些功能的位置。換句話說,你是如何發現dft函數的位置在$ opencv2.3 $ \ opencv \ modules \ core \ src \ dxt.cpp中的? – user2335132 2013-05-10 10:10:01