2013-06-26 78 views
3

我的意圖是測試對OpenCV算法的一些修改,特別是ORB特徵檢測器和描述符。所以我開始在C++的桌面上開發,並從OpenCV源文件複製了一些.cpp文件,特別是orb.ccp,fast.cpp,precomp.cpp,fast_score.cpp。第一個是算法的主要文件,第二個是ORB使用的特徵檢測器,第三個和第四個是fast.cpp中用「includes」調用的必需的。很明顯,我從OpenCV .hpp(s)複製了頭文件和方法聲明,創建了我的頭文件。我在所有文件中更改了涉及的兩個類的名稱(ORB和FAST - > myORB和myFAST),以便您可以將對我的算法版本的調用與OpenCV的調用區分開來,因爲仍需要OpenCV for所有imgproc函數,核心,mat類...用於修改cpp文件內部。將OpenCV項目從桌面C++移植到Android NDK

到目前爲止好,它的工作原理,我能夠使用我的版本的ORB複製並最終應用更改的算法。

當我切換到Android NDK時出現問題。在使用NDK設置項目之後,我所做的是創建一個JNI方法,在該方法中,我將實現將使用算法ORB的代碼,然後導入上述文件.cpp和.hpp,設置.mk文件和其他相關內容東西來編譯我的文件,並明顯設置項目使用OpenCV4Android。

問題是:我的算法工作正常,代碼是由Eclipse ADT編譯/構建和啓動的,我可以調用myORB類。但是,當我打開我的文件版本時,對於istance(my)orb.cpp,在ADT的編輯器中,出現了以下問題:與(opencv)方法相關的代碼有數十個錯誤,不存在(「無法解析」 ),使用無效參數調用(opencv)方法...所以打開文件後,它顯示錯誤,然後再次在ADT中構建項目是不可能的,但如果我刪除並將.cpp文件複製回該項目再次編譯沒有問題,直到我再次打開它...

回答

3

這個問題是由於Android ADT和/或Android NDK。編輯器識別虛假錯誤,實際上,控制檯指示C代碼編譯時沒有錯誤。但是,Eclipse不允許運行代碼/應用程序,據他說,它包含錯誤。因此,要解決這個問題最快的辦法是修改該項目的性質:

Project -> Properties -> C/C + + General -> Code Analysis 

改變的出現在編輯器中「警告」或其他類型的「問題」,「嚴重」。

+0

嗚,謝謝 那爲我工作 但它不是一個真正的解決方案......有解決這個問題 – MolhamStein