pc now!

進捗だめです><

Scientific Linux7でOpenCVインストール

はじめに

本記事では、以下の項目を満たすOpenCVの環境構築を目的とします。

  • Scientific LinuxでスムーズなOpenCVの導入が行える
  • OpenCVの基本的な機能を扱える
  • 一般的な動画の入出力が行える
  • GPU演算環境は考慮しない

動画を扱わないのであれば、

[root@localhost ~]#su
[root@localhost ~]#yum install opencv-devel

の実行だけで導入できる。

環境

導入パッケージ

Package Version Link Remarks Requirements
OpenCV 2.4.13 sourceforge.net OpenCV本体 CMake,TBB,FFmpeg
FFmpeg 3.1.1 ffmpeg.org OpenCVで動画を扱う場合必要 x264,x265,vpx,theora
x264 20160707-2245 download.videolan.org x264ビデオコーデックへの対応 YASM
x265 1.9 bitbucket.org x265ビデオコーデックへの対応 CMake,NUMA
vpx 1.6.0 chromium.googlesource.com vpxビデオコーデックへの対応
theora 1.1.1 theora.org theoraビデオコーデックへの対応 ogg
ogg 1.3.2 xiph.org oggオーディオコーデックへの対応
YASM 1.3.0 yasm.tortall.net x264等コンパイルに必要 GCC
CMake 2.8.11 yum OpenCV,x265コンパイルに必要 GCC-C++
GCC 4.8.5 yum YASM等コンパイルに必要
GCC-C++ 4.8.5 yum CMake等コンパイルに必要
NUMA 2.0.9 yum x265コンパイルに必要
TBB 4.1 yum ビルドの高速化
Git 1.8.3.1 yum ソースコードの取得(vpx)

他、扱う動画によって追加してください。
Linkがyumのものに関しては、ScientificLinux7.2のパッケージ管理ツールyumで対応出来るため、導入簡略化の意味も含め利用します。

インストール

インストールにあたりパッケージ間の依存関係が重要となります.
例えばFFmpegをインストールするためには要求されるx264,x265,vpx,theoraがインストールされている必要があります.
下記の順に従えば依存関係は問題となりませんが,上記導入パッケージのRequirementsの項目で確認できますので参考までにどうぞ.

0.環境のクリーンアップ

OpenCVをインストールするうえで障害となりうるパッケージを整理しておく.

1.YUMでの事前準備

まずyumからの設定。
以下のパッケージをyumからインストール。

端末を起動してスーパユーザー(root)にて以下のコマンドを実行。
以後スーパーユーザー(root)で実行の場合[root@localhost ~]と表記する。(通常は[user@localhost ~])

[root@localhost ~]#su
[root@localhost ~]#yum install cmake gcc gcc-c++ numactl numactl-devel

ここで、CMakeのバージョンについてOpenCV・x265それぞれの最低要求バージョンがあります。

  • OpenCV-2.4.13 =>CMake-2.8.11以上
  • x265 =>CMake-2.8.8以上

従ってyumでインストールしたCMakeのバージョンを確認。

[user@localhost src]# cmake --version
cmake version 2.8.11

CMake-2.8.11がインストールされていますのでOKです。 2.8.8以前が入っている場合、スーパーユーザーで削除([root@localhost ~]#yum remove cmake)
CMake公式ページより2.8.11以降のバージョンをダウンロード、コンパイル、インストールを行ってください。

※以後、ソースコードからのインストールになります。インストール後のディレクトリはアンインストール時に使用しますので削除しないでください。

2. YASMのインストール

今回はLinuxディレクトリ構成に従いインストールしていく。ソースコード置き場/usr/local/srcに移動。
wgetコマンドでソースコードのダウンロード。(コマンドが見つからない場合はyum install wgetの実行) x264の依存パッケージのためx264より先にインストールしておく必要があります。

[root@localhost ~]#cd /usr/local/src
[root@localhost src]#wget http://www.tortall.net/projects/yasm/releases/yasm-1.3.0.tar.gz
[root@localhost src]#tar xvf yasm-*.tar.gz
[root@localhost src]#cd yasm-1.3.0
[root@localhost yasm-1.3.0]#./configure
[root@localhost yasm-1.3.0]#make
[root@localhost yasm-1.3.0]#make install

3. x264のインストール

FFmpegの依存パッケージのためFFmpegより先にインストールしておく必要があります。

[root@localhost ~]#cd /usr/local/src
[root@localhost src]#wget http://download.videolan.org/pub/videolan/x264/snapshots/x264-snapshot-20160707-2245.tar.bz2
[root@localhost src]#tar xvf x264-*.tar.bz2
[root@localhost src]#cd x264-snapshot-20160707-2245
[root@localhost yasm-1.3.0]#./configure --enable-shared --enable-pic
[root@localhost yasm-1.3.0]#make
[root@localhost yasm-1.3.0]#make install

ここで、x264(以降のx265,OpenCV)はpkg-config対応のため以下のパス設定を行う。通常ユーザーで行ってください。
rootで行ってしまうと通常ユーザーで反映できません。 一度行えば以後行う必要はありません。

[user@localhost ~]#echo "export PKG_CONFIG_PATH=/usr/local/lib/pkgconfig" >> ~/.bashrc 
[user@localhost ~]#echo "export LD_LIBRARY_PATH=/usr/local/lib" >> ~/.bashrc 
[user@localhost ~]#source ~/.bashrc

4. x265のインストール

FFmpegの依存パッケージのためFFmpegより先にインストールしておく必要があります。

[root@localhost ~]#cd /usr/local/src
[root@localhost src]#wget https://bitbucket.org/multicoreware/x265/downloads/x265_1.9.tar.gz
[root@localhost src]#tar xvf x265_*.tar.gz
[root@localhost src]#cd x265_1.9/build/linux
[root@localhost x265_1.9]#cmake ../../source
[root@localhost x265_1.9]#make
[root@localhost x265_1.9]#make install

5. vpxのインストール

FFmpegの依存パッケージのためFFmpegより先にインストールしておく必要があります.

[root@localhost ~]#cd /usr/local/src
[root@localhost src]#git clone https://chromium.googlesource.com/webm/libvpx
[root@localhost src]#cd libvpx
[root@localhost libvpx]#./configure
[root@localhost libvpx]#make
[root@localhost libvpx]#make install

5. oggのインストール

theoraの依存パッケージのためtheoraより先にインストールしておく必要があります。

[root@localhost ~]#cd /usr/local/src
[root@localhost src]#wget http://downloads.xiph.org/releases/ogg/libogg-1.3.2.tar.gz
[root@localhost src]#tar xvf libogg-*.tar.gz
[root@localhost src]#cd libogg-1.3.2
[root@localhost libogg-1.3.2]#./configure
[root@localhost libogg-1.3.2]#make
[root@localhost libogg-1.3.2]#make install

6. theoraのインストール

FFmpegの依存パッケージのためFFmpegより先にインストールしておく必要があります。

[root@localhost ~]#cd /usr/local/src
[root@localhost src]#wget http://downloads.xiph.org/releases/theora/libtheora-1.1.1.tar.bz2
[root@localhost src]#tar xvf libtheora-*.tar.bz2
[root@localhost src]#cd libtheora-1.1.1
[root@localhost libtheora-1.1.1]#./configure
[root@localhost libtheora-1.1.1]#make
[root@localhost libtheora-1.1.1]#make install

7.FFmpegのインストール

OpenCVの依存パッケージのためOpenCVより先にインストールしておく必要があります。

[root@localhost ~]#cd /usr/local/src
[root@localhost src]#wget https://ffmpeg.org/releases/ffmpeg-3.1.1.tar.bz2
[root@localhost src]#tar xvf ffmpeg-*.tar.bz2
[root@localhost src]#cd ffmpeg-3.1.1
[root@localhost ffmpeg-3.1.1]#./configure --enable-libx264 --enable-gpl --enable-libx265 --enable-libvpx --enable-libtheora  --enable-nonfree
[root@localhost ffmpeg-3.1.1]#make
[root@localhost ffmpeg-3.1.1]#make install

8. OpenCVのインストール

[root@localhost ~]#cd /usr/local/src
[root@localhost src]#wget https://github.com/Itseez/opencv/archive/2.4.13.zip
[root@localhost src]#unzip 2.4.13.zip
[root@localhost src]#cd opencv-2.4.13
[root@localhost opencv-2.4.13]#mkdir build
[root@localhost opencv-2.4.13]#cd build
[root@localhost build]#cmake -D CMAKE_BUILD_TYPE=RELEASE -D WITH_TBB=ON -D BUILD_NEW_PYTHON_SUPPORT=NO ../

以上でOpenCVの導入完了です。

OpenCVの使い方

前述しましたが、OpenCVはpkgconfigに対応しており、pkgconfigからインクルードパスやライブラリパスを呼び出すことが出来ます。
インクルードパスを呼び出すには以下のコマンドを実行する事で得られます。

[user@localhost ~]#pkgconfig --cflags opencv

同様にライブラリパスの場合は以下のコマンドです。

[user@localhost ~]#pkgconfig --libs opencv

実際にOpenCVを用いて作成したプログラムをコンパイルする際は、以下のような記述でできます。
pkgconfig --cflags --libs opencvを囲っている上付きの点はバッククウォートです。

[user@localhost ~]#g++ test.cpp -o test `pkgconfig --cflags --libs opencv`