1. 程式人生 > >Build opencv libraries for android arm, x86 ubuntu

Build opencv libraries for android arm, x86 ubuntu

code post cto san data- 動態庫 ack blank scripts

廢話不多說。

準備工作:

1. 下載源代碼: http://opencv.org/

編譯平臺:ubuntu14.04

opencv 2.4.6.1

本人用這樣的辦法編譯了opecv 2.4.9 的沒有什麽問題, 問題比opencv2.4.6.1還要少, 事實上他們的原理是一樣的.

opencv 源代碼根文件夾----${opencv_home}

2.

改動 ${opencv_home}/platforms/scripts/cmake_android_arm.sh 文件,加入編譯選項 -DBUILD_SHARED_LIBS=ON 和 -DWITH_OPENCL=ON
改動後的cmake_android_arm.sh 文件例如以下:

#!/bin/sh
cd `dirname $0`/..

mkdir -p build_android_arm
cd build_android_arm

cmake -DCMAKE_BUILD_WITH_INSTALL_RPATH=ON -DCMAKE_TOOLCHAIN_FILE=../android/android.toolchain.cmake $@ ../..      -DBUILD_SHARED_LIBS=ON -DWITH_OPENCL=ON

3.

改動 ${opencv_home}/cmake/OpenCVDetectOpenCL.cmake

以便生成支持編譯opencl 的編譯選項:

OpenCVDetectOpenCL.cmake 40 行後面加入

set(OPENCL_FOUND YES)
set(OPENCL_INCLUDE_DIR your_ocl_include_dir)
#set(OPENCL_LIBRARY    you_opencl_lib_file_path)

一個是設置ocl頭文件,一個設置opencl 庫文件的, 上面把他凝視掉了是由於本人要用的是動態顯示調用的方式去調用opencl庫的api。 這樣就不用在編譯的加入於設備相關的opencl庫了。

4.

改動 ${opencv_home}/CMakeLists.txt
OCV_OPTION(WITH_OPENCL "Include OpenCL Runtime support
" ON IF (NOT IOS) )

這一步好像在opencv2.4.9 版本號的源代碼不用設置能夠。

這個的主要目的是為了能是下一步生成支持opencl 的選項。


5.運行 ${opencv_home}/platforms/scripts/cmake_android_arm.sh

假設運行有問題。 設置NDK 路徑:

終端運行:export NDKROOT=/xxxx/android-ndk-r9d

能夠看到:
-- Other third-party libraries:
-- Use IPP: NO
-- Use Eigen: NO
-- Use TBB: NO
-- Use OpenMP: NO
-- Use GCD NO
-- Use Concurrency NO
-- Use C=: NO
-- Use Cuda: NO
-- Use OpenCL: YES

這這樣就能編譯相關的庫了。 只是假設沒有設置

set(OPENCL_LIBRARY    you_opencl_lib_file_path)
這個可能會導致一些test 編譯只是去,沒有關系, ocl的相關庫已經能編譯好了。

6. 切換到 ${opencv_home}/platforms/build_android_arm 文件夾:

運行:make

等待編譯完畢吧...

7.終於Andorid動態庫在${opencv_home}/platforms/build_android_arm/lib/armeabi-v7a下生成

對於Android x86 的同理Android arm 庫的編譯方法, 僅僅是步驟2, 5操作腳本是 ${opencv_home}/platforms/scripts/cmake_android_x86.sh

祝你使用愉快。 有什麽問題。 歡迎指出。 以便更正。









Build opencv libraries for android arm, x86 ubuntu