Ubuntu 下安装 OpenCV3

基于 Ubuntu 16.04 下的 GCC 5.4,安装 OpenCV3 for C++ and Python3。


1 安装 gcc 编译环境

sudo apt-get install build-essential pkg-config cmake

这里通过 cmake 图形界面程序进行配置安装。因此,需要从官网上下载 cmake 二进制包并解压,里面带有 cmake-gui。

2 安装 Python3 的开发包

sudo apt-get install python3-dev

3 安装 Python3 下的 numpy 及其开发包

sudo python3 -m pip install -U numpy

4 安装其他依赖

其中,ffmpeg 用于音频视频处理。在 OpenCV 中打开常见的 avi 等格式的视频时,需要 ffmpeg 的支持(ffmpeg 依赖于 x264)。

sudo apt-get install libxvidcore4 libv4l-dev libx264-dev ffmpeg libgtk-3-dev libjpeg8-dev libtiff5-dev libjasper-dev libpng12-dev libatlas-base-dev gfortran

如果是在 Ubuntu 14 上,可能不能正常通过 apt-get 安装 ffmpeg。此时可进行源码编译安装,步骤如下:

  • 首先安装 ffmpeg 的依赖包 yasm:
    sudo apt-get install yasm
  • 然后到 ffmpeg 官网下载源码包,解压后进入该目录,执行下面命令:
    ./configure --prefix=/usr/local --enable-gpl --enable-version3 --enable-libx264 --enable-shared --disable-static
  • 上面成功执行后,执行下面命令,编译源码包,并链接生成相应的动态库以及可执行文件:
    make -j8
    -j8 表示用 8 个线程执行。
  • 再执行以下命令,将生成的可执行文件以及动态库安装到指定的安装目录中。
    sudo make install
  • 由于 /etc/ld.so.conf.d 中存在包含 /usr/local/lib 的文件(比如 libc.conf),因此无需再添加新的文件,直接执行:
    sudo ldconfig

5 下载并安装 OpenCV3

5.1 下载 OpenCV3 及 OpenCV3 的额外包

  • 安装 Git
    sudo apt-get install git
  • 下载 OpenCV3
    git clone https://github.com/Itseez/opencv.git
    cd opencv
    git checkout 3.2.0
  • 下载 OpenCV_Contrib
    git clone https://github.com/Itseez/opencv_contrib.git
    cd opencv_contrib
    git checkout 3.2.0

OpenCV 从 3.0 开始,就将一部分内容(比如 SIFT 等)分离到 opencv_contrib 中。因此,要完整安装 OpenCV,还需要安装 opencv_contrib。

5.2 用图形化工具配置生成 makefile

  • 切换至 opencv 目录,然后新建一个目录,用于存放 cmake 生成的配置文件。然后切换至 build 目录。
    mkdir build
    cd build
  • 再打开一个终端,到 cmake 目录里的 bin 子目录里找到 cmake-gui,然后运行一下命令:
    ./cmake-gui
    打开cmake图形化工具。

    然后在 Where is the source code 中添加 opencv 目录的路径,在 where to build the binaries 中添加 build 目录的路径。

  • 然后点击下面的 Configure,选择 Unix Makefiles,然后选择 default ...。点击 OK,从而处理 opencv 目录下的 CMakeLists.txt,并在 build 目录下生成 CMakeCache.txt 及 Makefile 等相关文件。
  • 然后开始进行配置。

    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
    15
    16
    17
    18
    19
    20
    21
    22
    23
    24
    CMAKE_BUILD_TYPE 设为 RELEASE
    CMAKE_INSTALL_PREFIX 设为 所要安装 OpenCV3 的目录(这里指定为 /usr/local)
    OPENCV_EXTRA_MODULES_PATH 设为 opencv_contrib 中的 modules 目录的路径(比如,/home/cuckootan/Downloads/opencv_contrib/modules)

    在 BUILD_EXAMPLES 的复选框里 打勾
    在 INSTALL_C_EXAMPLES 的复选框里 打勾
    在 INSTALL_PYTHON_EXAMPLES 的复选框里 打勾

    在 BUILD_opencv_python3 的复选框里 打勾
    PYTHON3_EXECUTABLE 设为 /usr/bin/python3
    PYTHON3_INCLUDE_DIR 设为 /usr/include/python3.5m
    PYTHON3_LIBRARY 设为 /usr/lib/x86_64-linux-gnu/libpython3.5m.so
    PYTHON3_PACKAGES_PATH 设为 /usr/local/lib/python3.5/dist-packages
    PYTHON3_NUMPY_INCLUDE_DIRS 设为 /usr/local/lib/python3.5/dist-packages/numpy/core/include

    在 WITH_FFMPEG 的复选框里 打勾
    在 WITH_GTK 的复选框里 打勾
    在 WITH_V4L 的复选框里 打勾
    在 WITH_TIFF 的复选框里 打勾
    在 WITH_PNG 的复选框里 打勾
    在 WITH_JPEG 的复选框里 打勾
    在 WITH_JASPER 的复选框里 打勾
    取消 WITH_CUDA 的复选框里的勾
    取消 WITH_CUFFT 的复选框里的勾

    除此之外,还要设置 BUILD_opencv_python3。由于它不存在于配置表中,因此要手动添加。单击 Add Entry,输入 BUILD_opencv_python3,选择 bool,并对其下面的复选框打上钩。

    另外,由于安装的是 GTK3,但由于在配置表中不存在,因此要手动添加。单击 ADD Entry,输入 WITH_GTK3,选择 bool,并对其下面的复选框打上钩。

    上面的路径信息需要按照自己的情况填写,比如 python3 的安装路径等。
    如果是想安装 OpenCV for Python2,则除了配置 Python2 的相关信息外,还要将上面所要添加的条目中的 python3 关键字改为 python2 即可。

  • 然后点击 Configure,应用刚才的修改并更新至 build 目录下的 CMakeCache.txt 中。然后点击 Generate,更新 Makefile。

5.3 用命令行配置生成 makefile

当然,也可以用命令行的方式配置生成 makefile。

  • 进入 opencv 目录,然后新建一个目录,用于存放 cmake 生成的配置文件。
    mkdir build
    cd build
  • 处理 opencv 目录下的 CMakeLists.txt,并在 build 目录下生成 CMakeCache.txt 与 Makefile 等文件。
    cmake ..
    cmake 会自动到 build 所在目录的父目录(也即 opencv 目录)中查找 CMakeLists.txt 文件。

    可以通过如下命令查看配置信息:
    cmake -LH .
    如果要查看高级配置信息,则执行以下命令:
    cmake -LAH .

  • 进行配置,并更新 Makefile。

    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
    15
    16
    17
    18
    19
    20
    21
    22
    cmake -D CMAKE_BUILD_TYPE=RELEASE \
    -D CMAKE_INSTALL_PREFIX=/usr/local \
    -D OPENCV_EXTRA_MODULES_PATH=/home/cuckootan/Downloads/opencv_contrib/modules \
    -D INSTALL_C_EXAMPLES=ON \
    -D INSTALL_PYTHON_EXAMPLES=ON \
    -D BUILD_opencv_python3=ON \
    -D PYTHON3_EXECUTABLE=/usr/bin/python3.5 \
    -D PYTHON3_INCLUDE_DIR=/usr/include/python3.5m \
    -D PYTHON3_INCLUDE_DIR2=/usr/include/x86_64-linux-gnu/python3.5m \
    -D PYTHON3_LIBRARY=/usr/lib/x86_64-linux-gnu/libpython3.5m.so \
    -D PYTHON3_NUMPY_INCLUDE_DIRS=/usr/local/lib/python3.5/dist-packages/numpy/core/include \
    -D PYTHON3_PACKAGES_PATH=/usr/local/lib/python3.5/dist-packages \
    -D WITH_GTK=ON \
    -D WITH_GTK3=ON \
    -D WITH_FFMPEG=ON \
    -D WITH_V4L=ON \
    -D WITH_TIFF=ON \
    -D WITH_PNG=ON \
    -D WITH_JPEG=ON \
    -D WITH_JASPER=ON \
    -D WITH_CUDA=OFF \
    -D WITH_CUFFT=OFF .

5.4 安装 OpenCV3 及 OpenCV3 的额外包

  • 切换至 build 目录中,执行下面命令,编译源码并链接生成相应的动态库以及可执行文件。
    make -j8
    j8表示用8个线程执行。
  • 执行完成后,再执行以下命令,将生成的可执行文件以及动态库安装到指定的安装目录中。
    sudo make install
  • 由于 /etc/ld.so.conf.d 中存在包含 /usr/local/lib 的文件(比如 libc.conf),因此无需再添加新的文件,直接执行:
    sudo ldconfig

5.5 测试 OpenCV for C++ 是否安装成功

新建一个 test.cc 文件,编辑如下:

1
2
3
4
5
6
7
8
9
10
#include <opencv2/opencv.hpp>

using namespace cv;

int main()
{
Mat img;

return 0;
}

然后执行如下命令:

1
2
3
4
5
export PKG_CONFIG_PATH=/usr/local/lib/pkgconfig
# 那个 ` 是 esc 键下面的字符。
g++ test.cc `pkg-config --cflags --libs opencv`
# 若无错误产生,则表示成功安装;否则安装失败。
./a.out

5.6 测试 OpenCV for Python3 是否安装成功

新建一个 test.py 文件,编辑为:

1
import cv2

然后运行这个文件。如果没有产生错误,则说明安装成功;否则安装失败。


Reference