Ubuntu16.04にOpenCV3.3をインストールする手順をお伝えいたします。
OpenCVは、JPEGとPNGの画像だけを扱うように、できるだけ最小の構成を目指します。
そのため、動画に関する設定はできるだけ除いた形でインストールを行います。

環境

今回の作業環境を確認しておきます。また、以下の作業はすべてターミナルにて行っております。

Ubuntuのバージョン


$ cat /etc/lsb-release

DISTRIB_ID=Ubuntu
DISTRIB_RELEASE=16.04
DISTRIB_CODENAME=xenial
DISTRIB_DESCRIPTION="Ubuntu 16.04.3 LTS"

準備

OpenCVをコンパイルするために必要なライブラリを導入します。


$ sudo apt-get install build-essential
$ sudo apt-get install cmake

opencvをaptで管理するためにcheckinstallを導入します。


$ sudo apt-get install checkinstall

コンパイル時のデータをキャッシュして2回目以降を高速化するためにccacheを導入します。


$ sudo apt-get install ccache

OpenCVで作成したプログラムで、画像を表示するためのGUIライブラリを導入します。


$ sudo apt-get install libgtk-3-dev

OpenCVで作成するプログラムで対応させる画像フォーマットを導入します。


$ sudo apt-get install libjpeg-dev
$ sudo apt-get install libpng++-dev

OpenCV3.3のインストール

OpenCV3.3をダウンロードします。解凍後に、カレントディレクトリを移動します。


# OpenCV3.3をダウンロード
$ wget https://github.com/opencv/opencv/archive/3.3.0.tar.gz

# 解凍
$ tar zxvf 3.3.0.tar.gz

# カレントディレクトリの移動
$ cd opencv-3.3.0

Makefileの作成を行うために、OpenCV 3.2 Makefile生成用スクリプトファイル(Ubuntu16.04) · GitHubを参考にさせていただきます。
なるべく最小構成となるように、いくつかの項目をOFFにしたものが以下になります。


#!/bin/bash

SOURCE_DIR="echo $(cd $(dirname $0);pwd)"
BUILD_DIR=${SOURCE_DIR}/build
GENERATOR_NAME="Unix Makefiles"

mkdir build
cd build

cmake \
-G "${GENERATOR_NAME}" \
--build ${BUILD_DIR} \
-D BUILD_CUDA_STUBS=OFF \
-D BUILD_DOCS=OFF \
-D BUILD_EXAMPLES=OFF \
-D BUILD_JASPER=OFF \
-D BUILD_JPEG=OFF \
-D BUILD_OPENEXR=OFF \
-D BUILD_PACKAGE=ON \
-D BUILD_PERF_TESTS=OFF \
-D BUILD_PNG=OFF \
-D BUILD_SHARED_LIBS=ON \
-D BUILD_TBB=OFF \
-D BUILD_TESTS=OFF \
-D BUILD_TIFF=OFF \
-D BUILD_WITH_DEBUG_INFO=ON \
-D BUILD_ZLIB=OFF \
-D BUILD_WEBP=OFF \
-D BUILD_opencv_apps=ON \
-D BUILD_opencv_calib3d=ON \
-D BUILD_opencv_core=ON \
-D BUILD_opencv_cudaarithm=OFF \
-D BUILD_opencv_cudabgsegm=OFF \
-D BUILD_opencv_cudacodec=OFF \
-D BUILD_opencv_cudafeatures2d=OFF \
-D BUILD_opencv_cudafilters=OFF \
-D BUILD_opencv_cudaimgproc=OFF \
-D BUILD_opencv_cudalegacy=OFF \
-D BUILD_opencv_cudaobjdetect=OFF \
-D BUILD_opencv_cudaoptflow=OFF \
-D BUILD_opencv_cudastereo=OFF \
-D BUILD_opencv_cudawarping=OFF \
-D BUILD_opencv_cudev=OFF \
-D BUILD_opencv_features2d=ON \
-D BUILD_opencv_flann=ON \
-D BUILD_opencv_highgui=ON \
-D BUILD_opencv_imgcodecs=ON \
-D BUILD_opencv_imgproc=ON \
-D BUILD_opencv_java=OFF \
-D BUILD_opencv_ml=ON \
-D BUILD_opencv_objdetect=ON \
-D BUILD_opencv_photo=ON \
-D BUILD_opencv_python2=OFF \
-D BUILD_opencv_python3=ON \
-D BUILD_opencv_shape=ON \
-D BUILD_opencv_stitching=ON \
-D BUILD_opencv_superres=ON \
-D BUILD_opencv_ts=ON \
-D BUILD_opencv_video=ON \
-D BUILD_opencv_videoio=ON \
-D BUILD_opencv_videostab=ON \
-D BUILD_opencv_viz=OFF \
-D BUILD_opencv_world=OFF \
-D CMAKE_BUILD_TYPE=RELEASE \
-D WITH_1394=ON \
-D WITH_CUBLAS=OFF \
-D WITH_CUDA=OFF \
-D WITH_CUFFT=OFF \
-D WITH_EIGEN=ON \
-D WITH_FFMPEG=OFF \
-D WITH_GDAL=OFF \
-D WITH_GPHOTO2=OFF \
-D WITH_GIGEAPI=ON \
-D WITH_GSTREAMER=ON \
-D WITH_GTK=ON \
-D WITH_INTELPERC=OFF \
-D WITH_IPP=ON \
-D WITH_IPP_A=OFF \
-D WITH_JASPER=OFF \
-D WITH_JPEG=ON \
-D WITH_LIBV4L=OFF \
-D WITH_OPENCL=ON \
-D WITH_OPENCLAMDBLAS=OFF \
-D WITH_OPENCLAMDFFT=OFF \
-D WITH_OPENCL_SVM=OFF \
-D WITH_OPENEXR=OFF \
-D WITH_OPENGL=ON \
-D WITH_OPENMP=OFF \
-D WITH_OPENNI=OFF \
-D WITH_PNG=ON \
-D WITH_PTHREADS_PF=OFF \
-D WITH_PVAPI=ON \
-D WITH_QT=OFF \
-D WITH_TBB=ON \
-D WITH_TIFF=OFF \
-D WITH_UNICAP=OFF \
-D WITH_V4L=OFF \
-D WITH_VTK=OFF \
-D WITH_WEBP=OFF \
-D WITH_XIMEA=OFF \
-D WITH_XINE=OFF \
${SOURCE_DIR}

CMakeを実行し、ビルドします。


$ sh opencv3.3_build-ubuntu16.04.sh

カレントディレクトリを移動します。


$ cd build

makeを実行し、コンパイルします。


$ make -j4

通常のmake installによる方法ではなく、aptやdpkgで操作できるように、checkinstallを用いてOpenCVをパッケージ化したうえでインストールします。
気を付ける点は、Nameを分かりやすく他のライブラリ・パッケージと被らない名前に設定することです。ここでは名前を「opencv3.3」としました。
checkinstallコマンドの最後の方に記載がありますが、アンインストールする場合は「dpkg -r opencv3.3」を実行します。


$ sudo checkinstall

checkinstall 1.6.2, Copyright 2009 Felipe Eduardo Sanchez Diaz Duran
           このソフトウェアはGNU GPLの下でリリースしています。


The package documentation directory ./doc-pak does not exist. 
Should I create a default set of package docs?  [y]: y

パッケージのドキュメンテーションを準備..OK

このパッケージの説明を書いてください
説明の末尾は空行かEOFにしてください。
>> opencv3.3
>> 

*****************************************
**** Debian package creation selected ***
*****************************************

このパッケージは以下の内容で構成されます: 

0 -  Maintainer: [ root@<user> ]
1 -  Summary: [ opencv3.3 ]
2 -  Name:    [ build ]
3 -  Version: [ 20171016 ]
4 -  Release: [ 1 ]
5 -  License: [ GPL ]
6 -  Group:   [ checkinstall ]
7 -  Architecture: [ amd64 ]
8 -  Source location: [ build ]
9 -  Alternate source location: [  ]
10 - Requires: [  ]
11 - Provides: [ build ]
12 - Conflicts: [  ]
13 - Replaces: [  ]

変更するものの番号を入力してください。Enterで続行します: 2
名前を入力: 
>> opencv3.3

このパッケージは以下の内容で構成されます: 

0 -  Maintainer: [ root@<user> ]
1 -  Summary: [ opencv3.3 ]
2 -  Name:    [ opencv3.3 ]
3 -  Version: [ 20171016 ]
4 -  Release: [ 1 ]
5 -  License: [ GPL ]
6 -  Group:   [ checkinstall ]
7 -  Architecture: [ amd64 ]
8 -  Source location: [ build ]
9 -  Alternate source location: [  ]
10 - Requires: [  ]
11 - Provides: [ build ]
12 - Conflicts: [  ]
13 - Replaces: [  ]

変更するものの番号を入力してください。Enterで続行します: 

Installing with make install...

========================= インストールの結果 ===========================
[  0%] Built target ittnotify
[ 15%] Built target libprotobuf
[ 28%] Built target opencv_core
[ 29%] Built target opencv_flann
[ 42%] Built target opencv_imgproc
[ 46%] Built target opencv_ml
[ 48%] Built target opencv_objdetect
[ 51%] Built target opencv_photo
[ 54%] Built target opencv_video
[ 65%] Built target opencv_dnn
[ 69%] Built target opencv_imgcodecs
[ 71%] Built target opencv_shape
[ 72%] Built target opencv_videoio
[ 73%] Built target opencv_highgui
[ 75%] Built target opencv_superres
[ 78%] Built target opencv_ts
[ 83%] Built target opencv_features2d
[ 89%] Built target opencv_calib3d
[ 92%] Built target opencv_stitching
[ 94%] Built target opencv_videostab
[ 96%] Built target opencv_traincascade
[ 97%] Built target opencv_createsamples
[ 98%] Built target opencv_annotation
[ 99%] Built target opencv_visualisation
[100%] Built target opencv_interactive-calibration
[100%] Built target opencv_version

======================== インストールに成功しました ==========================

Copying documentation directory...
./
./doc/
./doc/Makefile
./doc/CTestTestfile.cmake
./doc/cmake_install.cmake
./doc/CMakeFiles/
./doc/CMakeFiles/progress.marks
./doc/CMakeFiles/CMakeDirectoryInformation.cmake

Some of the files created by the installation are inside the home directory: /home

You probably don't want them to be included in the package.
それらを表示しますか? [n]: n
それらをパッケージから除外しますか?(yesと答えることをおすすめします) [n]: yes

Some of the files created by the installation are inside the build
directory: /home/<user>/opencv/opencv-3.3.0/build

You probably don't want them to be included in the package,
especially if they are inside your home directory.
Do you want me to list them?  [n]: n
それらをパッケージから除外しますか?(yesと答えることをおすすめします) [y]: yes

tempディレクトリにファイルをコピー..OK

Stripping ELF binaries and libraries...OK

manページを圧縮..OK

ファイルリストを作成..OK

Debianパッケージを作成..OK

Debianパッケージをインストール..OK

tempファイルを削除..OK

バックアップパッケージを書き込み..OK
OK

temp dirを削除..OK


**********************************************************************

 Done. The new package has been installed and saved to

 /home/<user>/opencv/opencv-3.3.0/build/opencv3.3_20171016-1_amd64.deb

 You can remove it from your system anytime using: 

      dpkg -r opencv3.3

**********************************************************************


作成したOpenCVパッケージがインストールされたかを確認します。


$ dpkg -l | grep opencv
ii  opencv3.3                                  20171016-1                                   amd64        opencv3.3

OpenCVを適用させます。


$ sudo ldconfig

サンプルプログラムの実行

サンプルプログラムを作成し、実行してみます。あらかじめ、適当な画像ファイルを用意して作成するサンプルプログラムと同一階層に「sample.jpg」として配置しておきます。
ここでは、「SAMPLE」とだけ記載した画像をあらかじめ作成しておきました。
vimエディタでサンプルプログラムをC++で作成します。


$ vim sample.cpp

以下の内容をコピーし、保存して閉じます。


#include <iostream>
#include <opencv2/core.hpp>
#include <opencv2/highgui.hpp>
#include <opencv2/imgcodecs.hpp>

int main(int argc, const char* argv[])
{
  cv::Mat mat = cv::imread("sample.jpg", cv::IMREAD_COLOR);
  cv::namedWindow("sample", cv::WINDOW_AUTOSIZE);
  cv::imshow("sample", mat);
  cv::waitKey(0);
  cv::destroyAllWindows();

  return 0;
}

サンプルプログラムをコンパイルします。


$ g++ sample.cpp -I/usr/local/include/opencv2 -I/usr/local/include/opencv -L/usr/local/lib -lopencv_core -lopencv_imgcodecs -lopencv_highgui

サンプルプログラムの実行を実行します。


$  ./a.out 

参考

関連する記事

Ubuntu OpenCVをインストールする手順