はじめに
OpenCVのインストール後に、web上に上がっているサンプルコードがコンパイルできずにハマったので書きました。インストール後にgcc/g++
でうまくコンパイルできない人・動作確認をできずに困っている人が対象読者です。インストール手順は詳しく書きませんので、ご了承下さい。
インストール
$ git clone git://github.com/Itseez/opencv.git
$ cd opencv/
$ sudo cmake .
$ sudo make
$ sudo make install
$ sudo ldconfig
必要なライブラリはググれば出まので、調べてみて下さい。
コンパイル
通らない
$ g++ `pkg-config --libs opencv` `pkg-config --cflags opencv` sample.cpp
ググると上記のようなオプションが示されているのですが、コンパイルが通らず下記のようなエラーが出ます。
/tmp/ccBfZH07.o: In function `main':
sample.cpp:(.text+0x9e): undefined reference to `cv::imread(cv::String const&, int)'
sample.cpp:(.text+0xee): undefined reference to `cv::HOGDescriptor::getDefaultPeopleDetector()'
#以下略
解決策
CMakeLists.txtやら散々調べましたが、単純に オプションの渡し方 が違ったみたいです。OpenCVのディレクトリ内opencv/samples/c/build_all.sh
を参考にするとオプションの書き方(エイリアス)は以下になるようです。
.bashrc
alias gcv='gcvgcv'
function gcvgcv() {
g++ -ggdb `pkg-config --cflags opencv` $@ `pkg-config --libs opencv`
}