簡體   English   中英

將 OpenCV 項目從桌面 C++ 移植到 Android NDK

[英]Porting OpenCV project from Desktop C++ to Android NDK

我的目的是測試對 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所有 imgproc 函數、核心、Mat 類...在修改的 cpp 文件中使用。

到目前為止一切順利,它有效,我能夠使用我復制的 ORB 版本並最終將更改應用於算法。

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

問題如下:我的算法有效,代碼由 Eclipse ADT 編譯/構建和啟動,我可以調用 myORB 類。 然而,當我打開我的文件版本時,例如(我的)orb.cpp,在 ADT 的編輯器中,出現了問題:代碼有幾十個錯誤,相對於(opencv)方法不存在(“無法解決” ), (opencv) 使用無效參數調用的方法......所以在我打開文件后它會顯示錯誤,然后不可能再次在 ADT 中構建項目,但是如果我刪除 .cpp 文件並將其復制回該項目再次編譯沒有問題,直到我再次打開它...

問題是由於 Android ADT 和/或 Android NDK。 編輯器識別出錯誤的錯誤,實際上是Console表明C代碼編譯沒有錯誤。 但是,Eclipse 不允許運行根據他的說法包含錯誤的代碼/應用程序。 因此,解決此問題的最快方法是在以下位置修改項目的屬性:

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

將編輯器中出現的“問題”的“嚴重性”更改為“警告”或其他類型。

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM