LINUX 安装编译opencv-4.5.1 和 opencv_contrib-4.5.1编译教程

        突然发现csdn上的资源不管怎么设置下载都会收费,因此将资源放在最前面:

        通过百度网盘分享的文件:帖子所需open-test.jar和.i文件.zip
        链接:https://pan.baidu.com/s/1eljLukeryBRctpO3TSzNKw 
        提取码:rq6n

前言

        我看了很多帖子,找了很多攻略,都没能找到在linux上安装opencv的详细攻略,目前有的攻略具体操作时,不是出现这种问题就是出现那种问题。此文是我对安装opencv的步骤和出现问题的一个总结,用于记录这几天的工作,供以后应用时参考。

        搭建环境:centos8.5 java8 opencv4.5.1 pythen3.6(虚拟机自带)

1.安装依赖项

sudo yum update  
sudo yum groupinstall "Development Tools"
sudo yum install cmake git
sudo yum install libjpeg-devel
sudo yum install libtiff-devel
sudo yum install epel-release  
sudo yum install python3-devel
sudo yum install atlas-devel
sudo yum install gcc-gfortran
sudo yum install gtk3-devel
sudo yum install ant  #如果不安装就不会编译出libopencv_java451.so文件,必须要有
python3.6 -m pip install numpy --user

        如果镜像仓库下载不了,可以删掉cd /etc/yum.repos.d 下的所有文件,重新加载仓库文件:

wget -O /etc/yum.repos.d/CentOS-Base.repo https://mirrors.aliyun.com/repo/Centos-vault-8.5.2111.repo

        检测虚拟机里面是否装了java8,如果没装需要装一下,具体攻略可以查一下,到处都是。

2.下载OpenCV源码

        我将opencv安装在 /opt/ 下,将文件解压到 /opt 下面,所以具体操作如下:

wget https://github.com/opencv/opencv/releases/tag/4.5.1
wget https://github.com/opencv/opencv_contrib/releases/tag/4.5.1
tar -zxvf opencv-4.5.1.tar.gz
tar -zxvf opencv_contirb-4.5.1.tar.gz

        下载 .i 文件,并将所有 .i 文件放到/opencv_contrib-4.5.1/modules/xfeatures2d/src 里面,具体文件如下:

        将/opencv-4.5.1/modules/features2d/test 的五个文件复制到 /opencv_contrib_4.5.1/modules/xfeatures2d/test下,具体文件如下:

        打开/opencv_contrib-4.5.1/modules/xfeatures2d/test/test_features2d.cpp修改信息:

将
#include "features2d/test/test_detectors_regression.impl.hpp"
#include "features2d/test/test_descriptors_regression.impl.hpp"
改为 
#include "test_detectors_regression.impl.hpp"
#include "test_descriptors_regression.impl.hpp"

        打开/opencv_contrib-4.5.1/modules/xfeatures2d/test/test_rotation_and_scale_invariance.cpp

将
#include "features2d/test/test_detectors_invariance.impl.hpp"
#include "features2d/test/test_descriptors_invariance.impl.hpp"
改为
#include "test_detectors_invariance.impl.hpp"
#include "test_descriptors_invariance.impl.hpp"

3. 创建编译目录并配置CMake

cd /opt/
mkdir build
cd build

cmake -D CMAKE_BUILD_TYPE=RELEASE \ -D CMAKE_INSTALL_PREFIX=/usr/local \ -D INSTALL_C_EXAMPLES=OFF \ -D INSTALL_PYTHON_EXAMPLES=ON \ -D OPENCV_EXTRA_MODULES_PATH=/opt/opencv_contrib-4.5.1/modules \ -D BUILD_EXAMPLES=ON \ -D PYTHON3_EXECUTABLE=/usr/bin/python3.6 \ -D PYTHON3_INCLUDE_DIR=/usr/include/python3.6m \ -D PYTHON3_PACKAGES_PATH=/usr/lib/python3.6/site-packages \ -D BUILD_opencv_python3=ON \ -D WITH_GTK=ON \ -D BUILD_SHARED_LIBS=ON \ -D WITH_JAVA=ON \../opencv-4.5.1

上面的命令格式化后:
cmake -D CMAKE_BUILD_TYPE=RELEASE \  
      -D CMAKE_INSTALL_PREFIX=/usr/local \  
      -D INSTALL_C_EXAMPLES=OFF \  
      -D INSTALL_PYTHON_EXAMPLES=ON \  
      -D OPENCV_EXTRA_MODULES_PATH=/opt/opencv_contrib-4.5.1/modules \  
      -D BUILD_EXAMPLES=ON \  
      -D PYTHON3_EXECUTABLE=/usr/bin/python3.6 \  
      -D PYTHON3_INCLUDE_DIR=/usr/include/python3.6m \  
      -D PYTHON3_PACKAGES_PATH=/usr/lib/python3.6/site-packages \  
      -D BUILD_opencv_python3=ON \  
      -D WITH_GTK=ON \  
      -D BUILD_SHARED_LIBS=ON \  
      -D WITH_JAVA=ON \  
      ../opencv-4.5.1

        PYTHON3_INCLUDE_DIR、PYTHON3_PACKAGES_PATH、PYTHON3_EXECUTABLE 三个路径要确保存在,要确保pythen的版本号与编译命令中的版本号一致。

选项解析:

  1. CMAKE_BUILD_TYPE=RELEASE
    • 设置构建类型为 RELEASE,这通常会优化代码以提高运行效率,并关闭调试信息。
  2. CMAKE_INSTALL_PREFIX=/usr/local
    • 指定安装目录为 /usr/local。这是 Linux 系统上常用的安装位置之一,用于存放手动安装的软件。
  3. INSTALL_C_EXAMPLES=OFF 和 INSTALL_PYTHON_EXAMPLES=ON
    • 控制是否安装 C 和 Python 示例代码。这里关闭了 C 示例的安装,但开启了 Python 示例的安装。
  4. OPENCV_EXTRA_MODULES_PATH=/opt/opencv_contrib-4.5.1/modules
    • 指定 OpenCV 贡献模块的路径。这些模块通常包含额外的算法和功能,不是 OpenCV 核心库的一部分。
  5. BUILD_EXAMPLES=ON
    • 开启示例代码的构建。注意,这与 INSTALL_C_EXAMPLES 和 INSTALL_PYTHON_EXAMPLES 不同,它控制是否构建示例代码,而不一定安装它们。
  6. PYTHON3_EXECUTABLEPYTHON3_INCLUDE_DIR 和 PYTHON3_PACKAGES_PATH
    • 分别指定 Python 3 解释器的路径、Python 头文件的路径和 Python 包的安装路径。这些选项对于构建 OpenCV 的 Python 绑定至关重要。
  7. BUILD_opencv_python3=ON
    • 显式开启 OpenCV Python 3 绑定的构建。在某些情况下,即使指定了 Python 路径,这个选项也是必要的。
  8. WITH_GTK=ON
    • 启用 GTK 支持,这允许 OpenCV 使用 GTK 图形库进行图像显示和其他 GUI 功能。
  9. BUILD_SHARED_LIBS=ON
    • 构建共享库(.so 文件),而不是静态库(.a 文件)。共享库可以被多个程序共享,从而节省磁盘空间和内存。
  10. WITH_JAVA=ON
    • 启用 Java 支持。这允许 OpenCV 与 Java 应用程序交互,但通常需要额外的依赖项,如 JNI(Java Native Interface)库和 JDK。

4.编译和安装

make -j$(nproc)  # 使用所有可用的处理器核心来加速编译  
sudo make install
sudo ldconfig

5.测试

        在 build 中 通过 ./setup_vars.sh 设置环境变量

[root@localhost build]# ./setup_vars.sh 
Setting vars for OpenCV 4.5.1
Append PYTHONPATH: /opt/build/python_loader

        然后通过:

 echo $PYTHONPATH

        查看是否添加了环境变量,如果为空,则需手动添加环境变量:

export PYTHONPATH="/opt/build/python_loader $PYTHONPATH"

        将两张图片传进/opt/里面:

        将测试jar包传进/opt/里面:

        在/opt/下编写启动脚本:

vi opencv-test.sh

        在脚本里写入启动命令:

#! /bin/bash
java -Djava.library.path=/opt/build/lib -jar ./opencv-test.jar > ./applcation.log 2>&1

        要确保再 /opt/build/lib 目录下存在libopencv_java451.so文件,如果不存在则需要把这个目录换成libopencv_java451.so文件所在的目录,并用下面的命令给opencv-test.sh执行权限:

chmod +rwx opencv-test.sh

        之后执行opencv-test.sh,通过postman进行测试,测试地址为:虚拟ip:8080/test/opencvtest

        opencv-test.jar制定的端口为8080,所以虚拟机需要开启对应端口。查看application.log,如果出现下列信息则说明opencv已正确安装。

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值