* Fedora 20でのインストールについて新たに書きました
* 最新の(Mavericks) MacでOpenCVをインストールして使うやりかたについて新たに書きました.
OpenCVのインストール
sudo apt-get install libcv-dev libhighgui-dev libml-dev libcvaux-dev sudo apt-get install opencv-doc
まずC++でOpenCVを使ったコード(main.cpp)を書きます.例えばこんな感じ.引数で渡した画像2枚の差の大きさを求めるプログラムです.
#include #include #include int main(int argc, char *argv[]){ cv::Mat img1=cv::imread(argv[1]); cv::Mat img2=cv::imread(argv[2]); std::cout << cv::norm(img1-img2) << std::endl; }
これをコンパイルするときには,(1)cv.hなどのOpenCVのヘッダファイルが何処にあるのかの指定と,(2)libcvなどのOpenCVのライブラリが何処にあるのかの指定が必要です.これらを勝手にリストアップしてくれるのがpkg-configというコマンド.
まず,(1)のヘッダファイルについては
pkg-config --cflags opencv
を実行することでリストアップできます.僕の環境では
-I/opt/local/include/opencv
となりました.次に,(2)のライブラリについても同様に
pkg-config --libs opencv
を実行することでリストアップできます.僕の環境では
-L/opt/local/lib -lml -lcvaux -lhighgui -lcv -lcxcore
となりました.これをg++に引数としてソースコードと一緒に渡してやればコンパイル出来ますです.
g++ -o main main.cpp -I/usr/include/opencv -L/usr/lib/opencv -lcv -lhighgui
ここで,pkg-configの結果を直接g++に渡したいものです.そこで登場するのが`(バッククオート).コマンドを`で囲むと,その部分が,そのコマンドを実行した結果に置き換わります.つまり
g++ -o main main.cpp `pkg-config --cflag opencv` `pkg-config --libs opencv`
と書けばOK.
毎回こんな長いコマンドを打つのはやってられないので,Makefileに
main: main.cpp g++ -o main main.cpp `pkg-config --cflag opencv` `pkg-config --libs opencv`
と書いてやれば,makeコマンド一発でコンパイル出来ます.もうちょっと洗練して
main: main.o g++ -o $@ $< `pkg-config --libs opencv` .cpp.o: g++ -o $@ -c $< `pkg-config --cflags opencv`
とかくとなおよし.
Makefileについて、知ったかでしたが、すごくやさしい説明でやっと理解できました。
ありがとうございます。
pkgconfig便利ですね。ためになりました。ありがとうございます。