- android-ndk-r10d (install path:
D:\adt-bundle-windows-x86_64-20140702\android-ndk-r10d\
) - OpenCV-2.4.10-android-sdk (install path:
D:\CODE\OpenCV-2.4.10-android-sdk\
), Download link - OpenCV-2.4.10 (install path:
D:\CODE\OpenCV-2.4.10\
), Download link
-
We actually only need to copy a few files from
OpenCV-2.4.10
source code toOpenCV-2.4.10-android-sdk
, namely:
Copy the nonfree folder fromOpenCV-2.4.10\sources\modules\nonfree\include\opencv2\
toOpenCV-2.4.10-android-sdk\sdk\native\jni\include\opencv2
. -
Create a folder to hold our new project for
libnonfree.so
. Here, I call itlibnonfree
. Create ajni
folder underlibnonfree
. Copy the following files fromOpenCV-2.4.10\sources\modules\nonfree\src
tolibnonfree\jni\
folder:
- nonfree_init.cpp
- precomp.hpp
- sift.cpp (use the original file)
- surf.cpp (use the original file)
- Building
libnonfree.so
:
CreateAndroid.mk
andApplication.mk
scripts. ThisAndroid.mk
is used to buildlibnonfree.so
.
- Application.mk
- Android.mk (you should modify
OPENCV_PATH
where yourOpenCV-2.4.10-android-sdk
is)
cd
into the project folder libnonfree
and type ndk-build
to build the libnonfree.so
.
So far, you have got libnonfree.so
along with libopencv_java.so
and libgnustl_shared.so
in libnonfree\libs\armeabi-v7a
folder.
You can easily build any SIFT or SURF applications using those libraries. If you want to use SIFT and SURF in JAVA code in your Android application, you only need to write JNI interfaces for the functions you want to use.
-
Create a project folder call
libnonfree_demo
. Create ajni
folder inside the project folder. Then copylibnonfree.so
along withlibopencv_java.so
andlibgnustl_shared.so
intojni
. -
Create a nonfree_jni.cpp in
jni
. It is simple SIFT test program. It basically reads an image and detects the keypoints, then extracts feature descriptors, finally draws the keypoints to an output image. -
Create
Android.mk
andApplication.mk
insidejni
:
- Application.mk
- Android.mk (you should modify
OPENCV_PATH
where yourOpenCV-2.4.10-android-sdk
is)
cd
into the project folder libnonfree_demo
and type ndk-build
to build the libnonfree_demo.so
.
At this point you can easily extend the sample app with your SVMDetector
. Just copy the source and include files int to the folder libnonfree_demo\jni
and add cpp files to LOCAL_SRC_FILES
in Android.mk
.
The whole source can be downloaded from: https://github.com/bkornel/opencv_android_nonfree.
Original source from: http://web.guohuiwang.com/technical-notes/sift_surf_opencv_android