Ubuntu+IntelliJ IDEA+Android 配置NDK環境+openCV
最近需要將Python人證對比模型移植安卓端.安卓端需要使用openCV簡單的人像提取處理.在配置openCV前首先需要配置NDK環境.
NDK的介紹(http://www.cnblogs.com/leaven/archive/2010/05/27/1744855.html)
一 NDK在Ubuntu的配置
參考: http://blog.csdn.net/jq_ak47/article/details/52349189
二 NDK在IntelliJ IDEA中的配置
參考: http://blog.csdn.net/yipatshi/article/details/54585049
三 NDK開發實例
參考: http://www.cnblogs.com/xiaoxiaoqingyi/p/6524165.html
在main/java下創建創建一個NDKUtils.Java類:
public class NDKUtils { public native String invokeCmethod(); static { System.loadLibrary("NDKUtils"); } }
右鍵選擇 External Tools ---> javah
會在app目錄下生成jni目錄和目錄內一個com_lemon_demo_utils_NDKUtils.h文件
復制.h 文件修改後綴名為 .c (該文件就是C 語言的實現文件)
修改com_lemon_demo_utils_NDKUtils.c內容:
JNIEXPORT jstring JNICALL Java_com_lemon_demo_utils_NDKUtils_jniInit (JNIEnv *env, jobject obj){ return (*env)->NewStringUTF(env,"NDK 獲取Native 字符串"); }
將jni目錄拷貝至main/java目錄下.
在jni目錄下新建Android.mk和Application.mk:
Android.mk:
LOCAL_PATH:=$(call my-dir) include $(CLEAR_VARS) LOCAL_MODULE := NDKUtils LOCAL_SRC_FILES := com_lemon_demo_utils_NDKUtils.c include $(BUILD_SHARED_LIBRARY)
Application.mk:
APP_PLATFORM := android-23
APP_ABI := armeabi
在IntelliJ IDEA的命令窗口(Terminal)執行:
cd app/src/main/
繼續輸入:
ndk-build
該命令是編譯C文件,然後生成 .so 文件,生成在 app\src\main\libs 目錄下。
完成後會在main目錄下生成libs和obj兩個目錄.
配置build.gradle 文件,在android {}中添加:
sourceSets{ main{ jni.srcDirs = [] // disable automatic ndk-build call, which ignore our Android.mk jniLibs.srcDir ‘src/main/libs‘ } }
在MainActivity中使用:
package com.lemoncome.opencvdemo; import android.support.v7.app.AppCompatActivity; import android.os.Bundle; import android.widget.TextView; public class MainOpencvActivity extends AppCompatActivity { @Override protected void onCreate(Bundle savedInstanceState) { super.onCreate(savedInstanceState); setContentView(R.layout.activity_main_opencv); NDKUtils ndk = new NDKUtils(); TextView text = (TextView) findViewById(R.id.tv); text.setText(ndk.invokeCmethod()); } }
運行程序會輸出字符串: NDK 獲取Native 字符串
以上測試成功.
四 Android+openCV
首先下載openCV包,地址:http://opencv.org/
最新的3.3,我下載了3.2
opencv配置參考: http://www.cnblogs.com/xiaoxiaoqingyi/p/6676096.html
把 sdk/native 目錄 拷貝到 項目的 jni 目錄下,
Ubuntu+IntelliJ IDEA+Android 配置NDK環境+openCV