2014-02-13 16 views
2

我目前正在研究評估不同方面的圖像的android應用程序,我發現有很多很棒的開源算法可以使用。有沒有簡單的方法直接在我的android應用程序上使用c/C++源代碼?

問題1:大多數算法都是用c/C++/matlab語言設計的,不能直接應用。 我在搜索NDK是一個工具,它允許我們通過其他語言開發android應用程序,但是安裝程序非常複雜,我堅持了幾天。因此,在我繼續討論之前,我想先問一下,是否可以像調用java庫一樣直接包含其他的c/C++源代碼?

問題2:例如,我想在我的應用程序中使用Point Matching算法的source code,但裏面有很多文件,因爲它只是源代碼而不是庫/插件。在我的android應用程序中應用require功能的步驟是什麼? (最希望的方式是盲目地輸入一些圖片給alogrithm,並返回就像調用函數,我沒有了解它的工作原理的結果。)

+0

轉到NDK這 –

+0

請參閱ndk工具上可用的NDK示例 –

+0

嘗試使用像AIDE這樣的工具並查看NDK接口如何生成。一旦你有了模板,你就可以用C++來完成剩下的工作。 – cup

回答

0
  1. 後,可以直接不使用其他C++庫,您必須先使用NDK爲Android構建它們。如果有一個爲Android構建的庫的版本,那麼當然你可以通過使用NDK鏈接到它來直接使用它。

  2. 您有兩種選擇。首先,爲Android創建一個常規的Java應用程序,編寫一個C++包裝器來處理對本機端的調用,並使用NDK構建必要的源文件。您的Java應用程序將使用JNI調用封裝器,封裝器將調用您的實際C++函數,如在C++中的Java-> JNI封裝器 - >您的實際C++源代碼。

第二個選項是要完全原生的,這將漏下的Java,JNI調用和包裝。您可以像直接編寫桌面C++應用程序一樣直接訪問源文件。最後,您將不得不使用NDK構建,但無論如何這一步都是必需的。

作爲一個建議,你也可以看看OpenCV的圖像處理目的。它有爲Android構建的庫,您只需將它們鏈接即可。

1

簡短版本。 下載opencv4android庫。在eclipse中導入它,看看是否一切正常(編譯錯誤,輸出等)。 其次,嘗試導入人臉檢測應用程序,並嘗試瞭解它是如何工作的。 它有一個Java部分和一個本地部分。 爲了理解它如何工作,您必須瞭解java如何與C++進行交互,或多或少地瞭解NDK如何工作。 一個重要的方面是學習如何在C++中創建接口,基於在java中定義的本地接口。當你到達那裏時,你可以嘗試創建你自己的應用程序。之後,你可以來這裏問問題。

+0

沒有什麼是簡單的,我浪費了1-2周的時間來學習如何正確配置Android NDK並調試本機應用程序,包括一些多線程。如果您期望簡單的方法和解決方法,您就會遇到錯誤的業務。 –

+0

感謝您的個人經驗分享! – nb369

+0

隨時隨地,一步一步,確保您正確理解每個組件的工作原理。這需要一段時間,但之後你應該可以從頭開始製作Android NDK應用程序,並與Opencv或任何C++庫集成。 –

相關問題