UbuntuにOpenCV3.2とcontribをインストールする。
まとめはしましたが、まだ試してみていないのでハマる箇所とか抜けがあるかもしれません。
流れ
- Ubuntuのパッケージを最新にする。
- gitとCmakeをインストールする。
- 依存関係をインストールする。
- OpenCVのソースとcontribのソースをダウンロードする。
- Cmakeを使って自分の環境に合ったソースを生成する。
- ソースをビルドする。
- ビルドしてできたバイナリとヘッダを適切な場所に配置する。
- 配置したバイナリとヘッダのパスを通す。
gitとCmakeをインストールする。
githubからソースをダウンロードするgitと、自分の環境に合ったソースを生成するCmakeをインストールします。
sudo apt-get install git sudo apt-get install cmake
依存関係をインストールする。
OpenCVのビルドに必要なライブラリなどをインストールします。
何が必要でどれをインストールしたらいいかは、OpenCVのドキュメントのチュートリアルやUbuntuのヘルプに書いてあります。
2つのURLで書いてあることが違うのですがどっちを信用すればいいかは分かりません。
他にも人によって若干違う(?)ような感じで、みなさんどこを参考にしているのでしょうか。違いは何なんですかね。
今回はOpenCVのドキュメントに従ってみます。
【参考URL】
- OpenCV: Installation in Linux
- OpenCV - Community Help Wiki
- Ubuntu 14.04にOpenCV 3.1.0をインストール - Akiraのメモ書き
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
1行目2行目は必須。3行目はオプションみたいです。
ちなみにUbuntuのヘルプに従う場合は以下。-qqはエラー以外を表示しないというオプションです。
sudo apt-get -qq install libopencv-dev build-essential checkinstall cmake pkg-config yasm libjpeg-dev libjasper-dev libavcodec-dev libavformat-dev libswscale-dev libdc1394-22-dev libxine-dev libgstreamer0.10-dev libgstreamer-plugins-base0.10-dev libv4l-dev python-dev python-numpy libtbb-dev libqt4-dev libgtk2.0-dev libfaac-dev libmp3lame-dev libopencore-amrnb-dev libopencore-amrwb-dev libtheora-dev libvorbis-dev libxvidcore-dev x264 v4l-utils ffmpeg cmake qt5-default checkinstall
参考にさせていただた記事に従うと以下になります。
sudo apt-get -y install libopencv-dev build-essential cmake git libgtk2.0-dev pkg-config python-dev python-numpy libdc1394-22 libdc1394-22-dev libjpeg-dev libpng12-dev libtiff4-dev libjasper-dev libavcodec-dev libavformat-dev libswscale-dev libxine-dev libgstreamer0.10-dev libgstreamer-plugins-base0.10-dev libv4l-dev libtbb-dev libqt4-dev libfaac-dev libmp3lame-dev libopencore-amrnb-dev libopencore-amrwb-dev libtheora-dev libvorbis-dev libxvidcore-dev x264 v4l-utils unzip
ソースをダウンロードする。
【参考URL】
インストールしたgitを使ってOpenCVのソースをダウンロードします。
ダウンロードする場所はどこでもいいのですが、今回はホーム直下にSourcesというディレクトリを作ってその中にダウンロードします。
下記のコマンドでホームに移動してSourcesというディレクトリを作成します
cd ~ mkdir Sources
できたディレクトリに移動してOpenCVのソースとcontribのソースをダウンロードする。
cd Sources git clone https://github.com/opencv/opencv.git git clone https://github.com/opencv/opencv_contrib.git
ソースのダウンロードはgitを使わなくても公式サイトからダウンロードしたり、githubのリリースのところからダウンロードしてもたぶん大丈夫です。
違いは、gitは最新バージョンで、公式サイトやgithubのリリースのところは安定バージョンがダウンロードできるってだけだと思います。
ダウンロード速度は公式サイトやgithubのリリースところからダウンロードしたほうが速いっぽいです。
Cmakeを使って自分の環境に合ったソースを生成する。
【参考URL】
まずダウンロードしたソースのディレクトリに移動してビルド用のディレクトリを作り、さらにそのディレクトリに移動します。
cd opencv mkdir build cd build
次に、Cmakeを使って自分の環境に合ったソースを生成します。
cmake -D CMAKE_BUILD_TYPE=RELEASE -D CMAKE_INSTALL_PREFIX=/usr/local -D OPENCV_EXTRA_MODULES_PATH=~/Sources/opencv_contrib/modules ..
一つ目のオプションはリリースモードを選択しています。
二つ目のオプションはインストールする場所を選択しています。
三つ目のオプションはOpenCVのcontribの場所を指定しています。gitでダウンロードしたopencv_contribの中のmodulesディレクトリを指定しましょう。
他にも必要ならば『-D WITH_CUDA=ON』や『-D WITH_TBB=ON』『-D WITH_FFMPEG=ON』などを追加してください。
何が設定できるかはCMakeLists.txtを見ればいいっぽいです。
ソースをビルドする。
make -j $(nproc)
配置したバイナリとヘッダを反映させる。
共有ライブラリにコピーされただけでは反映されないので、
このコマンドで共有ライブラリにコピーされたバイナリとヘッダを反映します。(たぶん)
sudo ldconfig
最後に
これで、OpenCVが使えるようになったはずです。
PythonやC++で試してみましょう。
また、この記事に書いてあること以外に、
CMakeを使う前にこのコマンドを入力しないとエラーがでるかもしれないとか、
export PYTHON_INCLUDE_DIRS="/usr/include/python2.7" export PYTHON_LIBRARYS="/usr/lib/x86_64-linux-gnu/libpython2.7.so"
最後に以下のコマンドが必要かもしれないと、参考にさせていただいた記事にありました。
エラーが出てしまった人は試してみてください。
sudo cp ~/opencv-3.1.0/build/lib/cv2.so /usr/local/lib/python2.7/site-packages/ sudo /bin/bash -c 'echo "/usr/local/lib" > /etc/ld.so.conf.d/opencv.conf'
ちなみに、OpenCVを使うために必要なものは make install コマンドで共有ライブラリにコピーされたはずなので、
gitでダウンロードしたソース(つまりこの記事の中でいうと、Sourcesディレクトリの中身)は削除しても大丈夫なはずです。(たぶん)
また、アンインストールの方法は共有ライブラリにコピーされたバイナリとヘッダを削除するだけ?なのかな?