OpenCV (安定版)を入れてみた
新しいPCにOpenCVをインストールしたときのメモです.
公式ページを参考にしました. OpenCV: Installation in Linux
環境とか
OS: Ubuntu 16.04.4 LTS
入れるもの: OpenCV 3.4.1 (Stable)
インストール
必要なものを突っ込む
多分全部標準で入っていますが, 念の為以下を動かしました.
$ sudo apt-get install build-essential $ sudo apt-get install cmake git libgtk2.0-dev pkg-config libavcodec-dev libavformat-dev libswscale-dev
必須パッケージはこれだけですが, 他にオプションとしていくつかのパッケージが提案されていました. オプションパッケージがそれぞれ何に使われるのか不明だったので, 簡単に調べた内容をまとめておきます.
パッケージ名 | 役割 |
---|---|
python-dev | OpenCVをPythonで使う用 |
python-numpy | 同上 |
libtbb2 | Threading Building Blocks, C++をマルチスレッドで動かすため |
libtbb-dev | 同上 |
libjpeg-dev | JPEG形式ファイルを扱えるようにするCライブラリ |
libpng-* | PNG形式ファイルを扱えるようにするCライブラリ (バージョンが色々ある, libpng16-devが最新?) |
libpng++-dev | libpngのC++向けインターフェース |
libtiff* | TIFF形式ファイルを扱えるようにするCライブラリ(libtiff5-devが最新?) |
libjasper-dev | JPEG 2000を扱えるようにするCライブラリ |
libdc1394-22-dev | IEEE1394規格に準拠したカメラを使う用 (このパッケージだけじゃ足りない説も?) |
調べ方が適当ですのでこんなものでご容赦を.
ソースコードを手に入れる
安定版は以下のリンクから落としました. Releases - OpenCV library
好きなバージョンのSourcesを落として展開します.
cmakeする
展開した場所まで入り, buildという名前のディレクトリを作って中に入ります.
$ mkdir build $ cd build
cmakeします.
$ cmake -D CMAKE_BUILD_TYPE=Release -D CMAKE_INSTALL_PREFIX=/usr/local ..
ここでエラー発生.
FATAL: In-source builds are not allowed. You should create a separate directory for build files.
何もわからないので, 調べます.
どうやらCMakeCache.txtを消せとありました. 消します.
$ cd .. $ rm CMakeCache.txt $ cd build/
再度挑戦します.
$ cmake -D CMAKE_BUILD_TYPE=Release -D CMAKE_INSTALL_PREFIX=/usr/local ..
無事通ったようです. 時間がかかる(今回は15分程度かかった)ので気長に待ちましょう.
参考
曰く, -Dの後の空白が悪さをすることもあるらしいです. その場合は以下を.
$ cmake -DCMAKE_BUILD_TYPE=Release -DCMAKE_INSTALL_PREFIX=/usr/local ..
makeする
makeします.
$ make -j8
並列数は自由です. 10分程度かかりました.
最後です.
$ sudo make install
任務完了です.
動作確認
適当な場所に画像を置きます. 同じ場所にtest.cppとかいうC++ファイルを生成します.
#include <opencv2/core.hpp> #include <opencv2/highgui.hpp> #include <opencv2/imgcodecs.hpp> int main() { cv::Mat m = cv::imread("sample.png", 1); cv::namedWindow("sample", cv::WINDOW_AUTOSIZE); cv::imshow("sample", m); cv::waitKey(0); cv::destroyAllWindows(); return 0; }
画像ファイル名は任意です.
コンパイルする前にパスを通します.
$ export LD_LIBRARY_PATH=$LD_LIBRARY_PATH:/usr/local/lib
~/.bashrcに書いてしまってもいいかもしれません.
コンパイルします.
$ g++ test.cpp -lopencv_core -lopencv_imgcodecs -lopencv_highgui
実行します.
$ ./a.out
画像が表示されれば勝ちです.