2014年4月12日 星期六

[NDK] OpenCV for Android 在Android Native Code上使用OpenCV library

首先需至 http://opencv.org/platforms/android.html 下載 OpenCV for android sdk
如:OpenCV-2.4.7.1-android-sdk

接著僅需在 Android.mk prebuild and include OpenCV shared library

以下為Android.mk sample,以"OpenCV-2.4.7.1-android-sdk"為例

# OpenCV path setting
LOCAL_PATH := $(call my-dir)
OPENCV_SDK_PATH := D:/OpenCV-2.4.7.1-android-sdk
OPENCV_INC_PATH := $(OPENCV_SDK_PATH)/sdk/native/jni/include
OPENCV_SO_PATH := $(OPENCV_SDK_PATH)/sdk/native/libs/armeabi-v7a

# Specify OpenCV.so location
include $(CLEAR_VARS)
LOCAL_MODULE := libopencv_java
LOCAL_SRC_FILES := $(OPENCV_SO_PATH)/libopencv_java.so
LOCAL_LDLIBS += -L d:\OpenCV-2.4.7.1-android-sdk\sdk\native\libs\armeabi-v7a\libandroid -lopencv_java
include $(PSHARED_LIBRARY)

# Build our library
include $(CLEAR_VARS)
OPENCV_LIB_TYPE := STATIC
include $(OPENCV_SDK_PATH)/sdk/native/jni/OpenCV.mk

LOCAL_MODULE := testlib

LOCAL_C_INCLUDES += $(OPENCV_INC_PATH) \
                    $(OPENCV_INC_PATH)/opencv \
                    $(OPENCV_INC_PATH)/opencv2

LOCAL_SRC_FILES := test.cpp
    
LOCAL_SHARED_LIBRARIES := libopencv_java

LOCAL_ARM_MODE := arm
LOCAL_ARM_NEON := true
LOCAL_CPPFLAGS += -std=c++11
LOCAL_CFLAGS   += -fvisibility=hidden \
    -fdiagnostics-color=auto -Ofast -mfloat-abi=softfp -mfpu=neon -fomit-frame-pointer -pthread    
LOCAL_CPPFLAGS += -fvisibility=hidden -fvisibility-inlines-hidden \
    -fdiagnostics-color=auto -Ofast -mfloat-abi=softfp -mfpu=neon -fomit-frame-pointer -pthread
LOCAL_LDLIBS += -llog

include $(BUILD_SHARED_LIBRARY)