2010-12-09 16 views
5

我之前和OpenCV結合使用過OpenCV,而我一直試圖做的就是在我的本地代碼和我的java代碼之間儘可能少地使用調用。當我看到Android的OpenCV port時,它似乎只是爲每個本地函數創建一個包裝函數,並從java中調用它們。現在,除非我完全誤解了swig wrappers的主體和這個端口的全部概念,否則這會比在本機代碼中進行實際編碼慢嗎?我注意到在本地代碼和java代碼之間傳遞數據非常慢,所以我不明白爲什麼它在這個端口中是最常見的東西。有關Android OpenCV端口的任何缺點?

我自己使用它,但我只是決定忽略所有的包裝,並使用代碼,並使用Android教程提供的常規方式創建自己的包裝。

所以我的問題是,我只是錯誤的缺點?或者他們真的在那裏使用OpenCV的真正優勢是什麼?我知道這些問題有些不正式,但我希望你們能幫助我。

回答

4

我不能給你你正在尋找的答案,但這裏是我的想法:有許多JNI圖層的例子,包括每個本地函數 - OpenGL,Android的畫布等。調用低谷JNI比慢完全使用本機代碼工作,但問題是它是否對具體應用程序有所影響?我認爲在大多數情況下,與原生功能花費的時間相比,此次懲罰是可以忽略的。不過,我贊成在Android應用程序的本地代碼中儘可能多地開展工作,這主要不是因爲執行速度更快,而是因爲與C和C++相比,Java是尷尬的語言。