依赖条件:
0. Android sdk
1. 支持STL的crystax's patched ndk
2. OpenCV-Android
android ndk 1.6 不支持大部分的STL去创建本地库,你需要使用一种改进的NDK,地址如下:
http://crystax.net/androidndk.php我搭建的开发环境是32位的window7 + windows 的crystax ndk
只要将它解压并cd到相应目录就可以像往常那样使用ndk了。
ps:还可以使用std::vector<IpPoint> 等.
用git获取 OpenCV-Android(svn也可以)
git clone: git://github.com/billmccord/OpenCV-Android
ndk编译生成以下opencv共享库
Ok. 我使用 swig 生成 jni wrappers...如果你没有,就去下载一个swig 。虽然OpenASURF的swig wrappers 已经生成了,但是如果你更改了代码,需要重新运行jni目录中的swig.sh.
接着我们开始看OpenASURF工程,打开Android.mk,修改以下两个变量(因为每个人放置的目录可能都不一样)
LOCAL_LDLIBS
OPENCV
由于我的OpenCV-Android项目和OpenASURF工程都是放在我自己定义的NDK/apps目录下,所以
(NDK_CV 是我export的/cygdrive/C/Android/android-ndk-r4-crystax/)
我的定义如下:
LOCAL_LDLIBS +=-L$(SYSROOT)/usr/lib -L$(NDK_CV)/apps/OpenCV-Android/trunk/obj/local/armeabi -lopencv -lcxcore -lcv -lcvaux -lcvml -lcvhighgui \
-llog \
OPENCV := ../OpenCV-Android/trunk/jni
现在就可以在OpenASURF根目录中运行$NDK/ndk-build了
这将会在 lib/armabi/ 目录中生成 OpenSURF.lib. 注意还要确保把 opencv.lib复制到该目录下.