opencv编译方法

2025-10-10 01:04:44

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、 OpenCV配置移动平台(目前针对的是android平台, 如有需要可以编译ios平台)选项说明(重要)

下面3副图中的内容见opencv源码:

openCV-2.4.13/platforms/android/android.toolchain.cmake

opencv编译方法

opencv编译方法

opencv编译方法

3、 不同平台下的OpenCV配置

   (1). armeabi架构

       新建名为cmake_a ndroid_armeabi.sh的文件: /home/zd/openCV-2.4.1      3/platforms/scripts/cmake_a ndroid_armeabi.sh

     该文件的内容如下图所示:

opencv编译方法

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

    该文件的内容如下图所示:

opencv编译方法

5、(3). arm64-v8a架构

     新建名为cmake_android_arm64-v8a.sh的文件: /home/zd/openCV-2.4.13/platforms/scripts/cmake_android_arm64-v8a.sh

   该文件的内容如下图所示:

opencv编译方法

6、(3). x86架构

 新建名为cmake_android_x86.sh的文件: /home/zd/openCV-2.4.13/platforms/scripts/cmake_android_x86.sh

该文件的内容如下图所示:

opencv编译方法

7、(4). x86_64架构

新建名为cmake_android_x86.sh的文件: /home/zd/openCV-2.4.13/platforms/scripts/cmake_android_x86.sh

该文件的内容如下图所示:

opencv编译方法

8、(5). Linux发行版---Ubuntu

新建名为cmake_linux-ubuntu.sh的文件: /home/zd/openCV-2.4.13/platforms/scripts/cmake_linux-ubuntu.sh

该文件的内容如下图所示:

opencv编译方法

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相应平台的工程源码,对应平台的工程源码见绿色框.

opencv编译方法

3、精细化配置opencv, 这里以armeabi平台为例

    (1). cd build_armeabi

    (2). ccmake .  .代表当前目录

    (3). 执行完步骤(2),可见如下界面

        该选项BUILD_SHARED_LIBS 默认是OFF,这里配置成了ON, 即编译出来         的是动态库

opencv编译方法

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

opencv编译方法

opencv编译方法

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

opencv编译方法

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

opencv编译方法

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

opencv编译方法

1、不同平台下的OpenCV的编译安装

 (1). 编译:  make -jN,  10.71服务器N=16, 因为服务器是8核的,每个核启动2         个线程,所以是16

 (2). 安装:  make install , 生成的include和lib文件,见下图红框处;特别说明          的是, Ubuntu发行版在安装的时候需执行该命令:sudo make install ,否          则没权限创建目录

说明:Ubuntu发行版的opencv 生成在该路径下,见右图:

opencv编译方法

opencv编译方法

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

opencv编译方法

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

     下面左图是android-ndk-r16b的目录结构,右图红框里面的目录是该版本中不存在的目录

opencv编译方法

opencv编译方法

声明:本网站引用、摘录或转载内容仅供网站访问者交流或参考,不代表本站立场,如存在版权或非法内容,请联系站长删除,联系邮箱:site.kefu@qq.com。
猜你喜欢