ぬうぱんの備忘録

技術系のメモとかいろいろ

作った曲一覧はこちら

OpenCVをビルドしてインストール

動機

 なんか手順間違えてる気がするのでちゃんとインストールし直す。

環境

Ubuntu 12.04 LTS
OpenCV 2.4.9

必要な依存パッケージの入手

 基本的にはこのコマンドでまとめて入手出来る。

sudo apt-get build-dep libcv-dev

 コンパイルしてて無くて困ったパッケージをメモ。

libavformat-dev
libavcodec-dev
libavfilter-dev
libswscale-dev
libx264-dev
libgstreamer0.10-dev
libxvidcore-dev
libvorbis-dev
libtheora-dev
libogg-dev 

もしかしたらffmpeg入れた時に不足してたパッケージとか混ざってるかも。vorbisとかあやしすぎ。

ソースコードの入手

 この記事書いてる現在だとUbuntuOpenCVのパッケージ(libcv2.3)が用意されているみたいですが、2.4.2を使いたいのと、最新版出た時にさっさと適用できるようにしておきたいのでgitからソースコードを落としてくることにする。
 gitからリポジトリのクローンは作業用ディレクトリに移動してこのコマンドで

git clone git://code.opencv.org/opencv.git

http://tessy.org/wiki/index.php?OpenCV%A4%F2git%A4%C7%A5%C1%A5%A7%A5%C3%A5%AF%A5%A2%A5%A6%A5%C8%A4%B9%A4%EB

コンパイル前に

 OpenCVは依存パッケージが多くて、使いたい機能に応じてパッケージを入れる感じみたいなのですが、そんなことしてるとまさかのタイミングでトラブルに見舞われそうなので依存パッケージをまとめて入手しておく。

http://d.hatena.ne.jp/shirayuu/20111023/1319326630

コンフィグとビルド

 ダウンロードしたリポジトリに移動して次のコマンド

cmake CMakeLists.txt

 依存パッケージが足りるとか足りないとかはここで全部わかる。とりあえず不足が無いかチェック。なきゃapt-getかググるか。
 不足パッケージを導入したら今度はフラグを付けてcmake。

cmake -D BUILD_EXAMPLES=ON -D CMAKE_BUILD_TYPE=RELEASE ./CMakeLists.txt
make -j3
sudo make install

2コアのCPUなので3スレッドでmake。makeが終わったらmake installでインストールもしちゃう。
/opt/local以下にインストールしたffmpegに依存させたい場合、方法無いんですかね?

その他漏れてる設定

 make installしただけだとpkg-configのパスが通ってないので忘れずに通しておくこと。
 それから共有ライブラリのパスを設定するとかすること。

もしかすると

 主にffmpegのパスの関係で抜けてる気がする・・・。
というのも、cmakeの段階でffmpeg関連ヘッダがnot foundになっているのに、ビルドの時にどこからffmpegのヘッダ類を見つけてきてるのかちょっと理解できない。

追記 - インストール先を変更したい場合

 cmakeのオプションに

-DCMAKE_INSTALL_PREFIX=/opt/...

みたいな感じのを与えてやれば良い。

追記 - @LIBAVUTIL51

 ffmpegありでコンパイルするときに***@LIBAVUTIL51が解決できない的なエラーを吐かれた。
古いバージョンのLIBAVUTILが無いってことだろうか。

sudo apt-get install libavutil51

素直にパッケージ版を使っとけってことでしょうかね。