Scientific Linux7でOpenCVインストール
はじめに
本記事では、以下の項目を満たすOpenCVの環境構築を目的とします。
- Scientific LinuxでスムーズなOpenCVの導入が行える
- OpenCVの基本的な機能を扱える
- 一般的な動画の入出力が行える
- GPU演算環境は考慮しない
動画を扱わないのであれば、
[root@localhost ~]#su [root@localhost ~]#yum install opencv-devel
の実行だけで導入できる。
環境
- Scientific Linux 7.2 x86_64
導入パッケージ
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`