-
準備Android-ndk Android-sdk eclipse(ADT+CDT) Java-JDK opencv android SDK軟件包並配置好Java環境
-
將opencv android SDK拷貝到Android工程目錄下,將OpenCV-2.4.10-android-sdk\sdk\java導入到項目
-
配置NDK
-
新建一個調用opencv的Android項目,讓此項目支持JNI(eclipse直接編譯so,之前寫錯了,應該是加載native的support)
-
添加opencv依賴庫
-
添加opencv頭文件
-
將Android opencv SDK armeabi-v7a中的libopencv_java.so拷貝到JNI目錄下並在Android.mk中添加
#OpenCV_INSTALL_MODULES:=on
#OPENCV_CAMERA_MODULES:=off
OPENCV_LIB_TYPE:=SHARE
ifeq ("$(wildcard $(OPENCV_MK_PATH))","")
#try to load OpenCV.mk from default install location
include D:/Ovationsoft/Android/lxctest/OpenCV-2.4.10-android-sdk/sdk/native/jni/OpenCV.mk
else
include $(OPENCV_MK_PATH)
endif
include $(CLEAR_VARS)
LOCAL_MODULE := opencv_java
LOCAL_SRC_FILES := libopencv_java.so
include $(PREBUILT_SHARED_LIBRARY) -
創建Java調用JNI的類
-
在OnClickListener添加: static {
System.loadLibrary("TongueProcess");
if (!OpenCVLoader.initDebug()) {
// Log.i("test", "OpenCVLoader.initDebug() 失敗");
} else {
System.loadLibrary("opencv_java");
}
} -
-
進入到項目bin/classes目錄,javah包名+類名生成頭文件並將頭文件拷貝到JNI目錄
-
創建CPP文件,並在Android.mk中添加
LOCAL_MODULE := ImgFun
LOCAL_SRC_FILES :=com_ovation_healthmirror_utils_TestOpencv.cpp
include$(BUILD_SHARED_LIBRARY)
-
直接Build Project即可生成so(build前要把引用的第三方so庫拷貝到JNI目錄下做備份並在Android.mk中配置
include$(CLEAR_VARS)
LOCAL_MODULE := BaiduMapSDK_base_v3_7_0
LOCAL_SRC_FILES :=libBaiduMapSDK_base_v3_7_0.so
include$(PREBUILT_SHARED_LIBRARY))