Opencv在安卓平台上编译----调用C++库
因项目需要在安卓平台上面进行人脸检测,而且为了提高效率需要调用C++的库函数。其中的大部分的步骤是
参考下面博客完成的。然而在这儿总结一下自己在整个编译安装过程中遇到的问题。
http://blog.csdn.net/pwh0996/article/details/8957764/
1.jni项目的建立。开始参考博客结果建立项目失败。然后按照以下步骤进行。
使用javah自动生成头文件
进入工程的src目录,敲入
javah com.example.test.MainActivity
参数为包含JNI函数的所在文件的全路径
让eclipse自动编译运行JNI,并进行代码提示
1、添加NDK路径:window->preferance->Android->NDK(如果没有NDK选项,需要下载NDK的ECLIPSE插件,可在网上搜索com.android.ide.eclipse.ndk_23.0.2.1259578.jar下载后直接放入eclipse/plugin目录)
2、新建工程, 右键工程 -> Android tools -> Add Native Support...,输入库的名字,则会自动生成CPP文件与makefile文件,其他参考前面的步骤,不变,
3、工程属性会出现C++选项, 在C/C++ general的Paths and Symbols中include增加NDK的include文件夹,可实现C++在自动编码提示
3、运行时,点多出来的锤子图标
将自己函数实现的。cpp文件和自动生成的头文件放到JNI目录下面。
2.修改.mk文件。
如下所示:
Android.mk文件修改为:
LOCAL_PATH := $(call my-dir)
include $(CLEAR_VARS)
include D:\softer\opencvSDK\sdk\native\jni\OpenCV.mk
LOCAL_MODULE := FaceDetect
LOCAL_SRC_FILES := FaceDetect.cpp
include $(BUILD_SHARED_LIBRARY)
Application.mk文件
APP_STL := gnustl_static
APP_CPPFLAGS := -frtti -fexceptions
APP_ABI := armeabi-v7a
3.修改.h头文件和.cpp文件。将java格式的函数修改为C,C++格式的。
最后结果如下图所示:
4.在Cygdrive交叉编译平台上面进入当前工程目录进行编译:如下图所示:
看到心动的.so文件了吧说明编译成功啦!!!