步骤

  • 1 安装cmake
  • 1-1 获取源码包
  • 1-2 解压源码包
  • 1-3 安装cmake
  • 1-4 查看安装版本
  • 2 安装opencv
  • 2-1 下载opencv安装包并整理层次
  • 2-2 添加依赖库
  • 2-3 开始编译
  • 3 配置环境
  • 4 检查安装是否成功
  • 5 使用CMakeLists.txt编译运行代码
  • 5-1 在代码同目录下创建 CMakeLists.txt ,示例如下:
  • 5-2
  • 5-3
  • 5-4
  • 5-5 在cmake、make步骤遇到过的问题


本机配置:
Ubuntu16.04
gcc 5.4.0
cmake 3.5.1
安装 opencv 版本 4.5.3

一点啰嗦:因为linux上安装opencv需要自己对源码进行编译,所以,就像其他博客里写到的一样,整个过程中会遇上很多问题,如在 cmake 那一步会遇上文件缺失等问题导致语句运行失败,且在实操过程中发现不同版本遇到的问题还会不一样。所以安装过程很难受。总之最后爬出来了,记录一下成功的做法,希望能帮上大家 ( •̀ ω •́ )y


1 安装cmake

编译 opencv 源码的过程中需要执行 cmake 语句,且存在版本要求。
如果在尝试安装 opencv 过程中遇到提示,则安装相应版本 cmake 即可。

1-1 获取源码包

首先新建一个文件夹存放cmake
mkdir app
cd ./app
wget https://cmake.org/files/v3.5/cmake-3.5.1.tar.gz

1-2 解压源码包

tar xzvf cmake-3.5.1.tar.gz

1-3 安装cmake

进入camke目录
cd cmake-3.5.1

依次运行以下命令
./bootstrap

make 

make install

1-4 查看安装版本

cmake --version

2 安装opencv

2-1 下载opencv安装包并整理层次

这里参考 这篇博客 提供的源文件下载地址:

git clone https://github.com/Itseez/opencv.git
git clone https://github.com/Itseez/opencv_contrib.git

(如果服务器上下载慢的话,建议本机下载完打包 scp 传输上去)

下载好两个文件夹后,将 opencv_contrib 文件夹移至 opencv 文件夹下。

2-2 添加依赖库

opencv 编译过程需要用到依赖库,所以这一步是必须的

sudo apt-get install build-essential
sudo apt-get install cmake git libgtk2.0-dev pkg-config libavcodec-dev libavformat-dev libswscale-dev
# 可选安装
sudo apt-get install python-dev python-numpy libtbb2 libtbb-dev libjpeg-dev libpng-dev libtiff-dev libjasper-dev libdc1394-22-dev

2-3 开始编译

1、进入 opencv 目录,创建一个 build 目录并进入目录

cd opencv
mkdir build
cd build

2、创建安装目录
并记住它,后文安装过程需要用到

mkdir /usr/local/opencv

或你也可以带上版本号

mkdir /usr/local/opencv-4.5.3

(当前你应该还在 ………/opencv/build 目录下)

3、进行 cmake 配置
对以下 cmake 语句进行修改,注意末尾的两个点不能省略,执行该语句:

cmake -D CMAKE_BUILD_TYPE=RELEASE -D CMAKE_INSTALL_PREFIX=/usr/local/opencv【这里改为上一步创建的安装目录】 -D WITH_TBB=ON -D WITH_CUDA=ON -D OPENCV_GENERATE_PKGCONFIG=YES -D BUILD_SHARED_LIBS=ON -D WITH_OPENMP=ON -D ENABLE_PRECOMPILED_HEADERS=OFF -D OPENCV_ENABLE_NONFREE=ON -D OPENCV_EXTRA_MODULES_PATH=……/opencv/opencv_contrib/modules【这里改为前面瞎子啊的源码中的 /opencv/opencv_contrib/modules 位置】 ..

这一步执行时间可能比较长,等待就好

4、进行编译安装

sudo make -j8  # 这里是允许多少个cpu同时进行编译,可以自己选择 -j4、-j8、…

这一步过程里如果出现如下提示:
error:cout’was not declared in this scope
则前往对应文件(ctrl+点击文件位置)在开头添加如下:

#include <iostream>
using namespace std;

5、完成后再执行

sudo make install

6、查看

完成后前往安装目录下的 lib 目录,会有类似下图的很多文件与 pkgconfig 目录:

linux ruheanzhuang opencv linux如何安装opencv4.5.3_linux


linux ruheanzhuang opencv linux如何安装opencv4.5.3_源码包_02

3 配置环境

打开以下文件:

sudo vim /etc/ld.so.conf.d/opencv.conf

在文件中加上opencv的安装位置:

/usr/local/opencv/lib【改为前文安装位置下的lib目录位置】

然后执行语句:

sudo ldconfig

打开系统环境变量文件:

sudo vim /etc/bash.bashrc

在文件后添加:

PKG_CONFIG_PATH=$PKG_CONFIG_PATH:/usr/local/opencv/lib/pkgconfig【这里改为前文安装目录下的/lib/pkgconfig位置】
export PKG_CONFIG_PATH

然后执行,使用环境变量生效:

source /etc/bash.bashrc

4 检查安装是否成功

前往 安装目录下的 lib/pkgconfig 目录,查看是否有一个 opencv4.pc 文件,将其改名为 opencv.pc 即可。
使用以下语句查看版本号:

pkg-config opencv --modversion

显示如下即成功:

linux ruheanzhuang opencv linux如何安装opencv4.5.3_源码包_03

5 使用CMakeLists.txt编译运行代码

5-1 在代码同目录下创建 CMakeLists.txt ,示例如下:

cmake_minimum_required(VERSION 2.8)
project(test)  # 生成可执行程序名称
set(CMAKE_CXX_FLAGS "${CMAKE_CXX_FLAGS} -std=c++11")

set(OpenCV_DIR "……/opencv/build")  # 前文安装opencv时创建的build目录路径(不是以/usr开头的安装目录)
find_package(OpenCV  REQUIRED)

# 打印 OpenCV 相关变量信息  可不用
message(STATUS "OpenCV library status:")
message(STATUS "    config: ${OpenCV_DIR}")
message(STATUS "    version: ${OpenCV_VERSION}")
message(STATUS "    libraries: ${OpenCV_LIBS}")
message(STATUS "    include path: ${OpenCV_INCLUDE_DIRS}")

INCLUDE_DIRECTORIES(
    ${PROJECT_SOURCE_DIR}
    ${OpenCV_INCLUDE_DIRS}
    )  # 导入 opencv 库文件
add_executable(${PROJECT_NAME} "main.cpp")  # 待编译的代码文件
target_link_libraries(
	${PROJECT_NAME}  
    ${OpenCV_LIBS}
)  # 链接 opencv 库

5-2

在 CMakeLists.txt 所在目录下创建一个目录 build(名字任意),在该目录下执行

cmake ..

出现类似这样的结果

linux ruheanzhuang opencv linux如何安装opencv4.5.3_源码包_04


……(中间会列出库文件,省略)

linux ruheanzhuang opencv linux如何安装opencv4.5.3_opencv_05


则成功完成。

5-3

再执行

make

linux ruheanzhuang opencv linux如何安装opencv4.5.3_git_06


如图,则已成功生成可执行文件。

在目录下可以找到生成的可执行文件 如:test (名字同 CMakeLists 中设置的项目名称)

5-4

执行可执行文件即可。

./test

5-5 在cmake、make步骤遇到过的问题

1、部份是由于在编译opencv库时,cmake步骤参数遗漏的缘故。

如遇到过提示缺少 OPENCV_ENABLE_NONFREE 的错误,就需要返回编译opencv步骤,在cmake语句中加上 -D OPENCV_ENABLE_NONFREE=ON 。
(前文的语句中已经补上)

2、部份是opencv不同版本库中同一动作的语句不同。

如此处特征寻找器的定义,上下分别是3.x、4.x版本的定义方法:

linux ruheanzhuang opencv linux如何安装opencv4.5.3_git_07


linux ruheanzhuang opencv linux如何安装opencv4.5.3_源码包_08


其他语句也存在不同,可前往自行查找

opencv3.x版本使用示例指路:

https://docs.opencv.org/3.4.4/d9/dd8/samples_2cpp_2stitching_detailed_8cpp-example.html opencv4.x版本使用示例指路:

https://docs.opencv.org/4.0.0/d9/dd8/samples_2cpp_2stitching_detailed_8cpp-example.html