[linux] CentOS 7 编译使用 openCv (Java)

安装编译环境

  • 安装 CMake (已安装则忽略此步骤)
    《CentOS 7 安装 CMake》
  • 安装 Ant
    调jni的SDK的jar包是通过ant编译,所以,需要装这个东西
    装完以后,你会发现他会给你装个jdk1.8,建议卸载掉
  • yum -y install ant

  • 配置JAVA_HOME
    安装之前先卸载掉已经安装的jdk版本
  • // 查看已安装的jdk包
    rpm -qa | grep jdk
    // 删除对应jdk软件包 xxx 为软件包名称
    rpm -e --nodeps xxx
    

    重新安装配置自己的jdk环境:《JDK环境变量配置》

    OpenCv 安装

    版本:4.4.0
    下载地址:基础包(opencv-4.4.0.tar.gz)拓展包(opencv_contrib-4.4.0.tar.gz)

    tar -zxvf opencv-4.4.0.tar.gz
    tar -zxvf opencv_contrib-4.4.0.tar.gz

  • 构建 (创建build目录,在build目录中构建,如有问题可删除build目录重新构建)
  • cd ./opencv-4.4.0
    mkdir build && cd build

  • 开始构建 - 注意后面有两个点一起复制
  • cmake -D CMAKE_BUILD_TYPE=RELEASE -D CMAKE_INSTALL_PREFIX=/usr/local -D OPENCV_GENERATE_PKGCONFIG=ON -D OPENCV_EXTRA_MODULES_PATH=/opt/opencv_contrib-4.4.0/modules -D ENABLE_CXX11=ON -D WITH_1394=OFF -D BUILD_opencv_xfeatures2d=OFF -D BUILD_SHARED_LIBS=OFF -D BUILD_TESTS=OFF ..

    cmake的参数说明
    -D CMAKE_BUILD_TYPE=RELEASE :编译发布版本
    -D CMAKE_INSTALL_PREFIX=/usr/local :编译后的安装主目录
    -D OPENCV_GENERATE_PKGCONFIG=ON :这个是为了C++引用的,可以忽略
    -D OPENCV_EXTRA_MODULES_PATH=/opt/opencv_contrib-4.4.0/modules :这个就是拓展包中附加模块路径,这个地址需要自定义
    -D ENABLE_CXX11=ON :C++版本支持
    -D WITH_1394=OFF :这个好像要加些依赖,关掉。不关也没关系
    -D BUILD_opencv_xfeatures2d=OFF :这里要重点说一下,在附件模块opencv_contrib-4.4.0/modules里面有很多目录,如果有些你不想要就关掉。比如xfeatures2d这个就导致我编译不过,我又不用,直接关掉。
    -D BUILD_SHARED_LIBS=OFF :这个重点说,就是让依赖库变成一个SO而不是很多SO。这个SO就是java的jni要用的。
    -D BUILD_TESTS=OFF :关掉测试,提高编译效率,减少时间。

    # -j8为核数,不加多核编译的话,可能需要几十分钟
    make -j8 
    make install
    在/usr/local/share/java/opencv4目录下会有我们所需的jar包与so库文件,如果没有,那就删了build文件,重新构建编译
    

    使用请参考《人脸识别 - 相似度》