Using Cmake-gui to build OpenCV and Opencv_contrib for Android on Ubuntu !
Note: If not install cmake-gui, just run script below:
#!/bin/sh
BASE_PATH=~/tool/Android
NDK_PATH=${BASE_PATH}/android-ndk-r16b
SDK_PATH=${BASE_PATH}/sdk
ANDROID_API_LEVEL=21
#declare -a ANDROID_ABI_LIST=("x86" "x86_64" "armeabi" "arm64-v8a" "armeabi-v7a" "mips" "mips64")
ANDROID_CONTRIB_PATH=../../opencv_contrib430/modules
INSTALL_PREFIX=./
cmake -DCMAKE_TOOLCHAIN_FILE=${NDK_PATH}/build/cmake/android.toolchain.cmake \
-DANDROID_NDK=${NDK_PATH} \
-DANDROID_NATIVE_API_LEVEL=${ANDROID_API_LEVEL} \
-DANDROID_SDK=${SDK_PATH} \
-DANDROID_ABI="arm64-v8a" \
-DANDROID_STL=c++_static \
-DWITH_CUDA=OFF \
-DWITH_MATLAB=OFF \
-DBUILD_ANDROID_EXAMPLES=OFF \
-DBUILD_DOCS=OFF \
-DBUILD_PERF_TESTS=OFF \
-DBUILD_TESTS=OFF \
-DCMAKE_BUILD_TYPE=Release \
-DOPENCV_EXTRA_MODULES_PATH=${ANDROID_CONTRIB_PATH} \
-DCMAKE_INSTALL_PREFIX=${INSTALL_PREFIX} ..
1.Cmake-gui 3.18.0
2.OpenCV 4.3.0
3.Opencv_contrib 4.3.0
4.Ubuntu 18.04
1.select source directory & output directory
2.Add Entry for Android
ANDROID_NDK
type is PATH
,enter NDK pathANDROID_SDK
type is PATH
,enter SDK pathANDROID_ABI
type is STRING
,default is armeabi-v7a
ANDROID_NATIVE_API_LEVEL
type is STRING
,default is 21ANDROID_STL
type is STRING
,enter c++_static
or c++_shared
(default gnustl_static
)CMAKE_TOOLCHAIN_FILE
type is FILEPATH
,Option2: enter NDK cmake path. likeandroid-ndk-r16b/build/cmake/android.toolchain.cmake
xxx/opencv/platforms/android/android.toolchain.cmake
then click the button Configure in bottom. if no errors, it will be show logs as below:
Parallel framework: pthreads
Trace: YES (with Intel ITT)
Other third-party libraries:
Custom HAL: NO
Protobuf: build (3.5.1)
Python (for build): /usr/bin/python3
Java: export all functions
ant: NO
Java wrappers: YES
Java tests: NO
Install to: /home/xxx/Document/player/build-opencv-for-android/opencv430/build/install
-----------------------------------------------------------------
Configuring done
3.Set Configuration for OpenCV(Options)
OPENCV_EXTRA_MODULES_PATH
set value:xxx/Document/player/build-opencv-for-android/opencv_contrib430/modules
BUILD_ANDROID_PROJECTS=ON
Build Android projects providing APK files.BUILD_ANDROID_EXAMPLES=OFF
BUILD_PERF_TESTS=OFF
BUILD_TESTS=OFF
BUILD_opencv_world=OFF
BUILD_SHARED_LIBS=OFF
WITH_CUDA=OFF
CMAKE_BUILD_TYPE=Release
then click the button Configure in bottom again. Also if no errors, it will be show logs as below:
GUI:
Media I/O:
ZLib: z (ver 1.2.3)
JPEG: build-libjpeg-turbo (ver 2.0.4-62)
WEBP: build (ver encoder: 0x020f)
PNG: build (ver 1.6.37)
TIFF: build (ver 42 - 4.0.10)
JPEG 2000: build Jasper (ver 1.900.1)
OpenEXR: build (ver 2.3.0)
HDR: YES
SUNRASTER: YES
PXM: YES
PFM: YES
Video I/O:
Parallel framework: pthreads
Trace: YES (with Intel ITT)
Other third-party libraries:
Custom HAL: NO
Protobuf: build (3.5.1)
Python (for build): /usr/bin/python3
Java: export all functions
ant: NO
Java wrappers: YES
Java tests: NO
Install to: xxx/Document/player/build-opencv-for-android/opencv430/build/install
-----------------------------------------------------------------
Configuring done
Finally, click the button Generate, and it will be show logs as below:
-----------------------------------------------------------------
Configuring done
Generating done
Note!
Do the stuff below before building:
Copy file xfeatures2d.hpp
and directory xfeatures2d
from xxx/opencv_contrib430/modules/xfeatures2d/include/opencv2
to xxx/opencv430/modules/features2d/include/opencv2
result like:
otherwise, will occurse error like:
In file included from /home/xxx/Document/player/build-opencv-for-android/opencv-4.3.0/modules/java/generator/src/cpp/opencv_java.cpp:8:
In file included from /home/xxx/Document/player/build-opencv-for-android/opencv-4.3.0/output/modules/java_bindings_generator/gen/cpp/opencv_jni.hpp:18:
/home/xxx/Document/player/build-opencv-for-android/opencv-4.3.0/output/modules/java_bindings_generator/gen/cpp/xfeatures2d.inl.hpp:12:10: fatal error: 'opencv2/xfeatures2d.hpp' file not found
#include "opencv2/xfeatures2d.hpp"
1.Command line build
cd /home/xxx/Document/player/build-opencv-for-android/opencv430/build
make -j8
No errors, exeute
make install
references: