zoukankan      html  css  js  c++  java
  • 在WIN10上不用CMake和MinGW编译Android版本的OpenCV

    构建编译项目

    不需要安装CMake,MinGW等额外工具。只需要Android NDK和OpenCV源码
    在WIN10上使用cmd窗口命令编译OpenCV步骤,操作版本为4.0.1:

    1. 在OpenCV根目录下面新建一个文件夹,比如叫做build_cmd。因为OpenCV要求CMAKE_BINARY_DIR不和CMAKE_SOURCE_DIR是同一个文件夹,所以不能在根目录下直接执行cmake
    2. cd到build_cmd
    3. 执行如下命令,路径对应修改
    E:AndroidSdkcmake3.10.2.4988404incmake.exe ^
    -DCMAKE_TOOLCHAIN_FILE=E:AndroidSdk
    dk-bundleuildcmakeandroid.toolchain.cmake ^
    -DANDROID_NDK=E:AndroidSdk
    dk-bundle ^
    -DANDROID_ABI="arm64-v8a" ^
    -DANDROID_SDK=E:AndroidSdk ^
    -DWITH_TBB=ON ^
    -DCPU_BASELINE=NEON ^
    -DCPU_DISPATCH=NEON ^
    -DOPENCV_ENABLE_NONFREE=ON ^
    -DBUILD_ANDROID_EXAMPLES=OFF ^
    -DBUILD_ANDROID_PROJECTS=OFF ^
    -DINSTALL_ANDROID_EXAMPLES=OFF ^
    -DANDROID_NATIVE_API_LEVEL=21 ^
    -DOPENCV_EXTRA_MODULES_PATH=F:opencv_401opencv_contrib_401modules ^
    -DCMAKE_CXX_FLAGS:STRING=-O3 ^
    -DCMAKE_C_FLAGS:STRING=-O3 ^
    -DCMAKE_BUILD_TYPE:STRING=Release ^
    -DBUILD_JAVA=OFF ^
    -DBUILD_ZLIB:BOOL=ON ^
    -DBUILD_opencv_world=ON ^
    -DBUILD_FAT_JAVA_LIB:BOOL=OFF ^
    -DBUILD_PERF_TESTS:BOOL=OFF ^
    -DBUILD_TESTS:BOOL=OFF ^
    -G "Ninja" ^
    -DCMAKE_MAKE_PROGRAM=E:AndroidSdkcmake3.10.2.4988404in
    inja.exe ../
    

    要点:

    1. E:AndroidSdkcmake3.10.2.4988404incmake.exe,这个是直接使用Android SDK中自带的cmake,没必要重新下cmake程序
    2. -DCMAKE_TOOLCHAIN_FILE=E:AndroidSdk dk-bundleuildcmakeandroid.toolchain.cmake,这个需要指定为Android SDK中的ndk中自带的文件,否则,可能会遇到NDK版本不对或者找不到toolchain文件的错误。
    3. -DANDROID_ABI="arm64-v8a",这个千万不能忘记
    4. -G "Ninja":最近的版本开始,Android SDK自带的cmake已经没有之前的Android - Gradle这个生成方式了,所以转而选择Ninja。不要去选择MinGW Makefiles之类的,因为那样的话,需要重新下载其他,而andoird sdk中自带Ninja编译
    5. -DBUILD_ANDROID_EXAMPLES=OFF -DBUILD_ANDROID_PROJECTS=OFF -DINSTALL_ANDROID_EXAMPLES=OFF,不用编译examples,浪费时间。同时可以避免CMake Error at samples/android/15-puzzle/CMakeLists.txt:3 (add_android_project): Unknown CMake command "add_android_project".错误。
    6. -DCPU_BASELINE=NEON -DCPU_DISPATCH=NEON ,开启NEON优化。ENABLE_NEON是个没用的参数,就算define了,也会显示No help, variable specified on the command line
    7. BUILD_JAVA=OFF,不编译java相关的
    8. BUILD_opencv_world=ON,把OpenCV编译到一个world库,减少库的数量。按需设置。
    9. OPENCV_ENABLE_NONFREE=ON,编译非免费算法。按需设置。
    10. OPENCV_EXTRA_MODULES_PATH=F:opencv_401opencv_contrib_401modules,编译extra模块
    11. BUILD_ZLIB:BOOL=ON,解决可能的zlib链接失败的问题。如果没有这个选项,就会链接到编译时固定的NDK路径去了

    编译与安装

    先后直线下面两个命令即可

    E:AndroidSdkcmake3.10.2.4988404in
    inja.exe
    E:AndroidSdkcmake3.10.2.4988404in
    inja.exe install
    
  • 相关阅读:
    Vsphere日记01.ESXi5.5.install
    Linux快速计算MD5和Sha1命令
    在linux虚机中装vmtools
    BT下载原理分析
    虚拟防火墙实验
    简单介绍一下vue2.0
    小白编程系列(一):编程语言选择
    html几种美丽的分割线
    利用:header匹配所有标题做目录
    markdown编辑器的小建议
  • 原文地址:https://www.cnblogs.com/willhua/p/12496577.html
Copyright © 2011-2022 走看看