2016-12-16 32 views
0

我目前正在從事的應用程序,其中涉及到Canny Edge Detection。我決定使用比使用Java更快的opencv庫。所以我將libopencv_java.so文件放在各自的目錄中。它的工作,但它導致巨大的apk大小。我不太瞭解C++語言。是否有可能生成libopencv_java.so文件,其中只包含邊緣檢測所需的組件,以減少apk大小?如何僅保留opencv android庫的模塊(Canny Edge Detection)?

如果是,如何?

否則,請建議其他快速和小型庫來執行Android中的Canny Edge Detection。

+0

你自己實現嗎? – TomJ

+1

opencv是開源的,所以你可以修改它。除了canny之外,您還需要一些核心功能。照顧許可證的東西。 – Micka

+0

@Micka謝謝你的建議,但問題在於圖書館非常龐大。我無法修改它。我不知道如何構建它的一個特定部分。 –

回答

2

您可以使用此處提及的方法爲android構建lib。

https://zami0xzami.wordpress.com/2016/03/17/building-opencv-for-android-from-source/

我猜你是使用JNI來實現你的工作,你必須使用OpenCV的,Android的SDK。

  1. 如果您正在使用靜態庫複製只需要lib添加到../的OpenCV-3.1.0-Android的sdk1/SDK /本地/庫/(目標-ABI文件夾)。

    2.如果您使用的是共享一個,那麼你就需要libopencv_java.So減少規模,從libopencv_java.so.To刪除不需要的lib中刪除此lib中去/opencv/modules/MODULE_NAME/CMakeLists.txt 發現一行 ocv_define_module(imgproc opencv_core WRAP java python) 並從這行刪除java。

據我所知,canny邊緣是imgproc或core或highgui的一部分。因此修改除這些之外的所有模塊的cmakelists。現在使用鏈接中的方法構建lib(在文章開頭給出)。將新的lib複製到sdk文件夾。

+0

網站中描述的方法過於複雜;想不出來。無論如何感謝您的幫助。 –

+0

你卡在任何特定的部分?在我的情況下,我有相同的方法,它的工作。哪部分是複雜的? –