多语言展示
当前在线:1605今日阅读:27今日分享:41

opencv编译方法

opencv 2.4.13 的源码不 android 不同架构--- armeabi,armeabi-v7a with NEON,arm64-v8a,x86,x86_64和 Linux发行版---Ubuntu下的编译方法
工具/原料
1

NDK , Ubuntu, Eclipse

2

opencv2.4.13 的源代码

方法/步骤
1

1. 准备环境    (1). Opencv源码版本: 2.4.13    (2). Opencv源码路径: /home/zd/openCV-2.4.13/    (3). 编译平台: Ubuntu    (4). NDK: /opt/android-ndk-r16b    (5). 设置ANDROID_NDK的环境变量         在~/.bashrc中设置ANDROID_NDK的值:export ANDROID_NDK=/op          t/android-ndk-r16b         执行source .bashrc 使刚才的设置生效    (6). 安装cmake以及依赖库(Ubuntu平台已安装)         sudo apt-get install cmake         sudo apt-get install build-essential libgtk2.0-dev libavcodec-dev                                         libavformat-dev libjpeg.dev libtiff4.dev                                         libswscale-dev libjasper-dev

2

2. OpenCV配置移动平台(目前针对的是android平台, 如有需要可以编译ios平台)选项说明(重要)下面3副图中的内容见opencv源码:openCV-2.4.13/platforms/android/android.toolchain.cmake

3

3. 不同平台下的OpenCV配置   (1). armeabi架构       新建名为cmake_a ndroid_armeabi.sh的文件: /home/zd/openCV-2.4.1      3/platforms/scripts/cmake_a ndroid_armeabi.sh     该文件的内容如下图所示:

4

(2). armeabi-v7a with NEON架构     新建名为cmake_android_armeabi-v7a-NEON.sh的文件: /home/zd/ope      nCV-2.4.13/platforms/scripts/cmake_android_armeabi-v7a-NEON.sh    该文件的内容如下图所示:

5

(3). arm64-v8a架构     新建名为cmake_android_arm64-v8a.sh的文件: /home/zd/openCV-2.4.13/platforms/scripts/cmake_android_arm64-v8a.sh   该文件的内容如下图所示:

6

(3). x86架构 新建名为cmake_android_x86.sh的文件: /home/zd/openCV-2.4.13/platforms/scripts/cmake_android_x86.sh该文件的内容如下图所示:

7

(4). x86_64架构新建名为cmake_android_x86.sh的文件: /home/zd/openCV-2.4.13/platforms/scripts/cmake_android_x86.sh该文件的内容如下图所示:

8

(5). Linux发行版---Ubuntu新建名为cmake_linux-ubuntu.sh的文件: /home/zd/openCV-2.4.13/platforms/scripts/cmake_linux-ubuntu.sh该文件的内容如下图所示:

方法/步骤2
1

以上配置选项含义:    (1). ANDROID_ABI --- 指cpu的架构,主流的架构包含armeabi, armeabi-v7        a, armeabi-v7a with NEON, arm64-v8a, x86, x86_64,手机中很少见到使        用x86和x86_64平台,但是在MID设备中很常见。  (2). ANDROID_TOOLCHAIN_NAME --- 工具链的名字,对应的是android-n        dk-r16b中图2的名字  (3). ANDROID_FORCE_ARM_BUILD --- 使用32位的arm指令集来代替Tumb         指令  (4). ANDROID_STL --- runtime时使用的库,默认是gnustl_static, 也可以改          为gnustl_shared  (5). ANDROID_STL_FORCE_FEATURES --- 使c++支持 rtti和exception  (6). CMAKE_TOOLCHAIN_FILE --- cmake工具链的路径, 这里指定的是相对          路径, 不同的opencv版本该路径可能不同  (7). ANDROID_NATIVE_API_LEVEL --- android api的级别  (8). CMAKE_SYSTEM_VERSION--- 为不同版本的主机操作系统启用的构建目        标  (9). CMAKE_BUILD_TYPE  ---- 编译出的文件是Release版本还是Debug版本

2

不同平台下的OpenCV的客制化配置:      如下图所示,红框处的脚本生成了opencv相应平台的工程源码,对应平台的工程源码见绿色框.

3

精细化配置opencv, 这里以armeabi平台为例    (1). cd build_armeabi    (2). ccmake .  .代表当前目录    (3). 执行完步骤(2),可见如下界面        该选项BUILD_SHARED_LIBS 默认是OFF,这里配置成了ON, 即编译出来         的是动态库

4

按键盘上面的字母t,进入高级模式,高级模式会多出很多配置选项, 注意下图中图片的右上角,配置选项有4页,每个选项的含义见下面右图中的红框位置,例如:当前光标在绿色框处,绿色框选项的说明见红色框. 每个选项的含义都需要自己去看

5

配置完成后按字母c, 会弹出如下界面, 再按下字母e

6

再按下字母g, 生成并退出

7

说明:intel架构平台请使能该选项, 可提高opencv的计算速度

方法/步骤3
1

不同平台下的OpenCV的编译安装 (1). 编译:  make -jN,  10.71服务器N=16, 因为服务器是8核的,每个核启动2         个线程,所以是16 (2). 安装:  make install , 生成的include和lib文件,见下图红框处;特别说明          的是, Ubuntu发行版在安装的时候需执行该命令:sudo make install ,否          则没权限创建目录说明:Ubuntu发行版的opencv 生成在该路径下,见右图:

2

编译出的不同OpenCV平台下的库

注意事项

编译opencv2.4.13的源码使用的NDK版本是---android-ndk-r16b,下图红框处的include文件夹在android-ndk-r16b中不存在,两个红框处的include文件夹来自android源码自带的ndk下,任何最新的android 源码下面都可以找到这个include文件夹.     下面左图是android-ndk-r16b的目录结构,右图红框里面的目录是该版本中不存在的目录

注意事项

在intel架构平台请使能该选项“--ffast-math”, 可提高opencv的计算速度,该选项“--ffast-math”默认是没有被配置的

推荐信息