• Ubuntu 上编译opencv_contrib模块for Android


    https://blog.csdn.net/ipfpm/article/details/81132144

    【ubuntu】Ubuntu中Android SDK下载跟配置 android24的版本

    (1)  安装ADNORID SDk环境

     https://developer.android.com/studio

    1.1 安装JAVA环境

    https://cloud.tencent.com/developer/article/1162527

    https://www.howtoing.com/how-to-install-java-with-apt-on-ubuntu-18-04

    OpenJDK 8

    Java 8是目前的长期支持版本,虽然公共维护在2019年1月结束,但仍然得到广泛支持。要安装OpenJDK 8,请执行以下命令:

    sudo apt install openjdk-8-jdk

    验证这是与安装

    java -version

    也可以只安装JRE,你可以通过执行sudo apt install openjdk-8-jre 。

    OpenJDK 10/11

    Ubuntu的存储库包含一个安装Java 10或11的软件包。在2018年9月之前,该软件包将安装OpenJDK 10.一旦Java 11发布,该软件包将安装Java 11。

    要安装OpenJDK 10/11,请执行以下命令:

    sudo apt install openjdk-11-jdk

    要仅安装JRE,请使用以下命令:

    sudo apt install openjdk-11-jre

    接下来,让我们看看如何安装Oracle的官方JDK和JRE。

    1.2 配置JAVA_HOME

    设置JAVA_HOME环境变量

    许多使用Java编写的程序使用JAVA_HOME环境变量来确定Java安装位置。

    要设置此环境变量,请首先确定Java的安装位置。使用update-alternatives命令:

    $ sudo update-alternatives --config java

    此命令显示Java的每个安装及其安装路径:

    There are 3 choices for the alternative java (providing /usr/bin/java).
    
      Selection    Path                                            Priority   Status
    ------------------------------------------------------------
    * 0            /usr/lib/jvm/java-11-openjdk-amd64/bin/java      1101      auto mode
      1            /usr/lib/jvm/java-11-openjdk-amd64/bin/java      1101      manual mode
      2            /usr/lib/jvm/java-8-openjdk-amd64/jre/bin/java   1081      manual mode
      3            /usr/lib/jvm/java-8-oracle/jre/bin/java          1081      manual mode
    
    Press <enter> to keep the current choice[*], or type selection number:

    在这种情况下,安装路径如下:

    1. OpenJDK 11位于 /usr/lib/jvm/java-11-openjdk-amd64/bin/java.
    2. OpenJDK 8位于/usr/lib/jvm/java-8-openjdk-amd64/jre/bin/java
    3. Oracle Java 8位于/usr/lib/jvm/java-8-oracle/jre/bin/java

    从您想要的安装中复制路径。然后使用nano或您喜欢的文本编辑器打开/etc/environment

    $ sudo nano /etc/environment

    在此文件的末尾,添加以下行,确保使用您自己复制的路径替换突出显示的路径:

    /etc/environment

    JAVA_HOME="/usr/lib/jvm/java-11-openjdk-amd64/bin/java"

    修改此文件将为系统上的所有用户设置JAVA_HOME路径。

    保存文件并退出编辑器。

    现在重新加载此文件:

    $ source /etc/environment

    验证是否已设置环境变量:

    $ echo $JAVA_HOME

    您将看到刚刚设置的路径:

    /usr/lib/jvm/java-11-openjdk-amd64/bin/java

    其他用户需要执行命令source /etc/environment或注销并重新登录才能应用此设置。

    1.3 下载

    https://blog.csdn.net/opengl_es/article/details/80184519

    解压后,出现 tools 目录,将其放入一个空的 SDK 待安装目录下,开始安装。

    二、列出可安装组件包

    使用快捷键 CTRL + ALT + T 打开 Console 控制端,进入上面解压出来的 tools 目录下的 bin 目录,找到 sdkmanager ,

    执行如下命令

    ./sdkmanager --list ( ../android list sdk  已过时)

    三、安装组件包

    接下来,选择上面的 PATH 列内容进行安装,命令如下:

    $ ./sdkmanager "system-images;android-27;google_apis;x86"
    

    ./sdkmanager  "双引号中是上面的path"

    ./sdkmanager "build-tools;28.0.0"
    ./sdkmanager "ndk-bundle"
    ./sdkmanager "ndk;20.0.5594570"
    ./sdkmanager "platforms;android-28"
    ./sdkmanager "sources;android-28"
    ./sdkmanager "system-images;android-28;google_apis;x86_64"

    2 编译opencv以及opencv_contrib

    https://www.cnblogs.com/klchang/p/7563494.html

    本文以编译opencv 3.3.0 和 opencv_contrib 3.3.0为例,系统为 Linux x64 (Fedora 21),具体步骤如下:

    1. 下载 Source code zip 压缩包

    从下面网址,选择 opencv 3.3.0 Source code 下载 
    https://github.com/opencv/opencv/releases

    从下面网址,选择下载与 opencv 3.3.0 对应的 opencv_contrib 3.3.0 
    https://github.com/opencv/opencv_contrib/releases

    注意:opencvopencv_contrib 版本必须保持一致,否则可能会出现编译错误。

     

    2. 下载 build-opencv-for-android 开源代码

    $ cd /mnt/work
    $ git clone https://github.com/tzutalin/build-opencv-for-android.git
    $ cd build-opencv-for-android

     

    3. 解压源码包并重命名

    opencv-3.3.0.zip 和 opencv_contrib-3.3.0.zip 都解压到下载的build-opencv-for-android 开源代码 所在目录 /mnt/work/build-opencv-for-android 

    $ unzip opencv-3.3.0.zip -d /mnt/work/build-opencv-for-android
    $ unzip opencv_contrib-3.3.0.zip -d /mnt/work/build-opencv-for-android
    $ cd /mnt/work/build-opencv-for-android
    $ mv opencv-3.3.0 opencv
    $ mv opencv_contrib-3.3.0 opencv_contrib

     

    4. 修改 build-opencv-for-android 开源代码中 build-android-opencv.sh

    修改内容如下:

    修改 第 行代码:

    declare -a ANDROID_ABI_LIST=("x86" "x86_64" "armeabi" "arm64-v8a" "armeabi-v7a" "mips" "mips64")

    declare -a ANDROID_ABI_LIST=("armeabi-v7a")

    3 错误

    opencv_contrib/modules/xfeatures2d/src/boostdesc.cpp:653:20: fatal error: 'boostdesc_bgm.i' file not found

    下载这些文件

    xfeatures2d/boostdesc: Download failed: 7;"Couldn't connect to server"

    下载 对应的文件

    放到

    build-opencv-for-androidopencv_contribmodulesxfeatures2dcmake

    build-opencv-for-androidopencv_contribmodulesxfeatures2dsrc

    5. 执行脚本 build-android-opencv.sh

    $ ./build-android-opencv.sh /mnt/work/android/android-sdk-linux/ndk-bundle

    注:build-android-opencv.sh脚本的通用的执行命令格式为“./build-android-opencv.sh [NDK_ROOT]”,其中,参数NDK_ROOT是可选的,表示Android Native Development Kit (NDK) 顶层目录,如果没有提供,则会试图寻找环境变量 ANDROID_NDK

     

    6 在Android中使用

    在mk文件中加入

    # OpenCV
    OPENCV_CAMERA_MODULES:=on
    OPENCV_INSTALL_MODULES:=on
    OPENCV_LIB_TYPE:=STATIC
    #include D:/projectAndroidOpenCV-2.4.10-android-sdksdk ativejniOpenCV.mk
    #include /software/OpenCV-android-sdk/sdk/native/jni/OpenCV.mk #without opencv_contrib
    include /software/build-opencv-for-android/android_opencv/opencv/sdk/native/jni/OpenCV.mk #with opencv_contrib

    7 问题2

    terminate called after throwing an instance of 'cv::Exception'
    what(): OpenCV(3.4.3-dev) /home/zhourui/Software/opencv_contrib/modules/xfeatures2d/src/sift.cpp:1205: error: (-213:The function/feature is not implemented) This algorithm is patented and is excluded in this configuration; Set OPENCV_ENABLE_NONFREE CMake option and rebuild the library in function 'create'

    https://zhuanlan.zhihu.com/p/48854990

     cmake -DOPENCV_EXTRA_MODULES_PATH=<opencv_contrib>/modules -DOPENCV_ENABLE_NONFREE=ON

  • 相关阅读:
    MSSQL大量数据时,建立索引或添加字段后保存更改超时该这么办
    POJ 3261 Milk Patterns (后缀数组)
    POJ 1743 Musical Theme (后缀数组)
    HDU 1496 Equations (HASH)
    694. Distinct Substrings (后缀数组)
    POJ 1222 EXTENDED LIGHTS OUT (枚举 或者 高斯消元)
    POJ 1681· Painter's Problem (位压缩 或 高斯消元)
    POJ 1054 The Troublesome Frog (hash散列)
    HDU 1716 排列2
    HDU 4405 Aeroplane chess (概率DP & 期望)
  • 原文地址:https://www.cnblogs.com/adong7639/p/11422666.html
Copyright © 2020-2023  润新知