1.提前安装依赖

建议按照下述命令进行全安装。实际在安装过程中,系统会跳过那些已经安装过的依赖。

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

依赖包包括在编译的时候要用到一些软件,像gcc,cmake;还有一些是下载opencv需要的工具,像Git;还有一些编译opencv所必需的,像ffmpeg 或libav ;还有一些是可选的包等等。可以通过下面几条命令来安装这些依赖包:

2.下载源码包

下载地址:https://github.com/opencv/opencv/releases 下载后解压到/home目录下,解压后的文件名为opencv-3.3.1。

3.开始安装

按照下述命令依次执行安装过程:

预备阶段

cd ~/opencv-3.3.1
mkdir build	 # 创建工程编译所需文件夹
cd build
  1. 配置
#注意,后面的两个点千万不能省,代表了上级目录
cmake -D CMAKE_BUILD_TYPE=Release -D CMAKE_INSTALL_PREFIX=/usr/local ..

上面的CMAKE_BUILD_TYPE =RELEASE指明编译的版本是Release版,CMAKE_INSTALL_PREFIX=/usr/local指明编译后的可执行程序的存放目录。

  1. 编译&&安装
make -j7     # 多线程执行make任务
sudo make install

上面代码中的-j7指7线程同时编译,根据自己CPU的特点调整该参数,如果不了解自己CPU,直接执行make即可。

  1. 查看安装信息
pkg-config --modversion opencv	#查看安装版本

4.验证程序

创建main.cpp文件,加入如下代码:

#include <iostream>
#include <opencv2/opencv.hpp>
 
using namespace std;
using namespace cv;
 
int main()
{
    Mat srcImage = imread("lena.jpg");
    imshow("源图像",srcImage);
 
    waitKey(0);
 
    return 0;
}

程序所使用的编译命令:

g++ -o main main.cpp `pkg-config opencv --cflags --libs`

上述编译命令中:

–cflags:用来指定程序在编译时所需要头文件所在的目录 –libs:用来指定程序在链接时所需要的动态链接库的目录

在上面的编译命令中我们其实用到了一个工具“pkg-config”,它主要有以下几个功能: 1.检查库的版本号。如果所需要的库的版本不满足要求,它会打印出错误信息,避免链接错误版本的库文件。 2.获得编译预处理参数,如宏定义,头文件的位置。 3.获得链接参数,如库及依赖的其它库的位置,文件名及其它一些连接参数。 注意:使用之前请确保你安装的OpenCV的安装链接库文件的目录下有一个pkgconfig文件夹,在该文件夹里面有个opencv.pc的文件,其实这就是pkg-config下OpenCV的配置文件。

最后:

./main	#进行验证

若这时你发现有如下的错误提示:

./main: error while loading shared libraries: libopencv_highgui.so.3.3: cannot open shared object file: No such file or directory

这里有两种解决方案: 1.首先在/etc/ld.so.conf.d/处创建文件opencv.conf,并在其中添加上opencv的库目录/usr/local/lib,最后使生效即可。可能使用到的命令如下(永久有效):

sudo vi /etc/ld.so.conf.d/opencv.conf		#创建配置文件,其最终在文件/etc/ld.so.conf内被调用
sudo ldconfig								#使改动生效

opencv.conf文件的全部内容:

#opencv的库路径 /usr/local/lib

2.请执行以下命令,为程序指明库文件的存储位置(重启后失效)。

export LD_LIBRARY_PATH=$LD_LIBRARY_PATH:/usr/local/lib

而后再次编译、运行,即可成功。

5.如果你想卸载掉OpenCV

make uninstall
cd ..
sudo rm -r build
sudo rm -r /usr/local/include/opencv2 /usr/local/include/opencv /usr/include/opencv /usr/include/opencv2 /usr/local/share/opencv /usr/local/share/OpenCV /usr/share/opencv /usr/share/OpenCV /usr/local/bin/opencv* /usr/local/lib/libopencv*

6.参考内容

1. OpenCV配置——在Linux中使用OpenCV2. Ubuntu 16.04 安装opencv的各种方法