2013年3月5日火曜日

OpenCV を Visual Studio で使う方法の解説

OpenCV を Visual Studio で使う方法
http://physics-station.blogspot.jp/2013/03/opencv-visual-studio.html
の解説です。最終更新:11月19日

OpenCVは非常に強力な画像処理ライブラリであり、一般的な画像処理はこのライブラリをつかえばほぼ実現できます。

いずれのライブラリにも言えることですが、導入が面倒であったり、日本語の解説サイトが少ない又は古いということがよくあります。OpenCVも導入編を解説したサイトの多くが、CMakeを使っていたり、インクルードファイルの設定が面倒だったりと、初心者にとっては辛いサイトが多い気がしていました。

なので、OpenCVの初心者でも間違いなく一発で導入できることを目標に、上の「OpenCV を Visual Studio で使う方法」を書きました(が、これでも難しい人もいるでしょう)。ここでは簡略化のために説明しきれなかった情報の補足をします。

OpenCVは執筆段階のver2.4.7で4つのプラットフォームに対応しています。また、言語もC、C++、Phytonなどに対応しています。ここでは、VC++を使う観点から、全てのコードにおいてC++のコードを使います。OpenCVでは、「cv」+大文字から始まるCの関数は使わず、名前空間cvと小文字から始まるC++の関数を使います。

opencv.orgで配布されているOpenCVのライブラリには、VC++ですぐに使えるダイナミックリンクライブラリ「.dll」が含まれています。以前はCMakeなど自分で「.dll」を作成しなければなりませんでしたが、今はその必要はありません。ただし、OpenNIやICCを使った「.dll」を作成するときなどは、CMakeで作成する方法は有効です。

2.ライブラリの展開

ライブラリの展開場所ですが、C:\以外でも構いません。この後の設定の内容を必要に応じて変えれば問題ありません。

3.静的リンクライブラリの設定

静的リンクライブラリの設定は、pragmaというプリプロセッサ命令で解決します。VCに直接指定することもできますし、毎回pragmaを書く方法もありますが、pragmaが書かれたファイルを作成し、そのファイルを使いまわすことが、最も簡単で説明しやすい方法だと思っています。

ここで、ファイル名の最後の方にある「247」は、opencvのバージョンによって違うので、バージョンが上がるたびに(筆者かあなたが)書き換える必要があります。バージョンによって梱包されている.libの名前が違うことがあるので、もし動かない場合はバージョン2.4.7を入れてみてください。

4.動的リンクライブラリの設定

動的リンクライブラリ(ダイナミックリンクライブラリ)はWindowsにPathを通す必要があります。

VS2008 32bitの場合
C:\opencv\build\x86\vc9\bin

VS2008 64bit の場合
C:\opencv\build\x64\vc10\bin

VS2010 or VS2012 32bit の場合
C:\opencv\build\x86\vc10\bin

VS2010 or VS2012 64bit の場合
C:\opencv\build\x64\vc10\bin

バージョン2.4.7ではVS2010とVS2012に対応しています。VS2008には対応しなくなったようです。

5.VisualStudioの設定

VisualStudioの設定については、いくつかの流儀があるように思います。Userファイルに設定する方法は、表からは見えない場所に各種設定をしてしまうため、再インストールしたときなどに行方不明になる可能性大です(というわけで、筆者はこの方法は使っていません)。プロジェクトを作るときに(面倒だけど)毎回能動的に設定する方法で記述しています。

ここまで設定してきたインクルードファイル、静的リンクライブラリ(ライブラリ)をVSに設定することになります。動的リンクライブラリはWindowsに設定したのでVSに設定する必要はありません。また、VSを起動した状態で動的リンクライブラリを設定したときは、VSを再起動する必要があります。

6.サンプルプログラムの作成

ここまでの作業が問題ないかを確認するための大事な作業です。プログラミングの業界ではおなじみのHello World!を画像上に描写しそれを表示するプログラムにしました。
解説は以上です。

最後に、OpenCV歴が短い筆者ではありますが、この強力なライブラリを一人でも多くの人が楽に使えることを願って、また拙筆かつ遅筆をご容赦いただければと思います。

0 件のコメント:

コメントを投稿

注: コメントを投稿できるのは、このブログのメンバーだけです。