之前在中编译过opencv源码用于海思平台,这里通过修改脚本编译opencv 2.4.13.6源码,使其支持android平台。
1. 从下载opencv 2.4.13.6源码;
2. 调整opencv-2.4.13.6/CMakeLists.txt,在其最前面添加语句:add_definitions(-DANDROID);
3. 修改后的脚本build.sh内容如下:
#! /bin/bash
cmake -G"Unix Makefiles" \
-DCMAKE_BUILD_TYPE=RELEASE \
-DCMAKE_C_COMPILER=/opt/__android-ndk-r14b/gcc/android-21/android-aarch64/bin/aarch64-linux-android-gcc \
-DCMAKE_CXX_COMPILER=/opt/__android-ndk-r14b/gcc/android-21/android-aarch64/bin/aarch64-linux-android-g++ \
-DANDROID=ON \
-DANDROID_ABI="arm64-v8a" \
-DANDROID_ARM_MODE="arm64" \
-DANDROID_PLATFORM="android-19" \
-DANDROID_TOOLCHAIN="gcc" \
-DBUILD_SHARED_LIBS=ON \
-DCMAKE_CXX_FLAGS=-fPIC \
-DCMAKE_C_FLAGS=-fPIC \
-DENABLE_PIC=ON \
-DWITH_1394=OFF \
-DWITH_ARAVIS=OFF \
-DWITH_ARITH_DEC=ON \
-DWITH_ARITH_ENC=ON \
-DWITH_CLP=OFF \
-DWITH_CUBLAS=OFF \
-DWITH_CUDA=OFF \
-DWITH_CUFFT=OFF \
-DWITH_FFMPEG=ON \
-DWITH_GSTREAMER=ON \
-DWITH_GSTREAMER_0_10=OFF \
-DWITH_HALIDE=OFF \
-DWITH_HPX=OFF \
-DWITH_IMGCODEC_HDR=ON \
-DWITH_IMGCODEC_PXM=ON \
-DWITH_IMGCODEC_SUNRASTER=ON \
-DWITH_INF_ENGINE=OFF \
-DWITH_IPP=OFF \
-DWITH_ITT=OFF \
-DWITH_JASPER=ON \
-DWITH_JPEG=ON \
-DWITH_PNG=ON \
-DWITH_LAPACK=ON \
-DWITH_LIBREALSENSE=OFF \
-DWITH_NVCUVID=OFF \
-DWITH_OPENCL=OFF \
-DWITH_OPENCLAMDBLAS=OFF \
-DWITH_OPENCLAMDFFT=OFF \
-DWITH_OPENCL_SVM=OFF \
-DWITH_OPENEXR=OFF \
-DWITH_OPENGL=OFF \
-DWITH_OPENMP=OFF \
-DWITH_OPENNNI=OFF \
-DWITH_OPENNNI2=OFF \
-DWITH_OPENVX=OFF \
-DWITH_PROTOBUF=OFF \
-DWITH_PTHREADS_PF=ON \
-DWITH_PVAPI=OFF \
-DWITH_QT=OFF \
-DWITH_QUIRC=OFF \
-DWITH_TBB=OFF \
-DWITH_TIFF=ON \
-DWITH_VULKAN=OFF \
-DWITH_WEBP=ON \
-DWITH_XIMEA=OFF \
-DWITH_GTK=ON \
-DINSTALL_C_EXAMPLES=OFF \
-DINSTALL_PYTHON_EXAMPLES=OFF \
-DBUILD_EXAMPLES=OFF \
-DBUILD_TESTS=OFF \
-DBUILD_PERF_TESTS=OFF \
-DCMAKE_INSTALL_PREFIX=./install \
..
4. 终端定位到opencv-2.4.13.6目录下,依次执行如下命令:
mkdir build
cd build
cp ../build.sh .
./builld.sh
make -j8
make install
执行后的结果如下图所示:
注意:以上脚本是编译aarch64,如果编译armv7,则需对应修改以下几条语句即可:
-DANDROID_ABI="armeabi-v7a" \
-DANDROID_ARM_MODE="arm" \
-DCMAKE_C_COMPILER=/opt/__android-ndk-r14b/gcc/android-21/android-armv7/bin/arm-linux-androideabi-gcc \
-DCMAKE_CXX_COMPILER=/opt/__android-ndk-r14b/gcc/android-21/android-armv7/bin/arm-linux-androideabi-g++ \