外在化して一度調べたことはなるべくまた調べないためのメモ。
CやC++で書かれた画像の認識や処理のためのライブラリ群。これじゃ書きたりないだろうけど管々しく引用するのは今回省略。
2011.7.30時点での最新ヴァージョンは2.3。1.xから2.xへメジャーアップデートした際に大きく構成や機能の変更・追加があることと、日本語リファレンスの書籍の多く(「OpenCV プログラミングブック」とか「詳解 OpenCV」とか)が発売時期から1.xベースなのが悩ましいところ。
2.xの最初のリリース、2.0の(オンラインで参照できる)ReadMeを見ると、
といった感じで詳細は個別に見ていかないとよくわからん。ChangeLogはアーカイブファイル内の ./doc/ChangeLog.htm を参照。
opencv.jp を参考に。
http://opencv.jp/opencv-1.1.0/document/
http://opencv.jp/opencv-2.2/cpp/
見比べるとCVの各機能がより大きく扱われてるのと、CVAUXが一見見当たらないことがわかります。CVAUXを自分が使うかどうかもまだわからないので必要に応じて要調査。
元のCで書かれたライブラリとAS3をブリッジするライブラリはなく、手動でObject Detectionのみを移植したライブラリがある。時期からしてほぼ間違いなく1.xベース。
公式ページ
実装例
というすごい例が。
http://blog.alumican.net/2010/08/10_040647
http://ubaa.net/shared/processing/opencv/
上記ページを読んでるとMacは1.1ベースでWindowsは1.0ベースらしい。
実装例
oF自体にadd onとして含まれてる。現時点での最新版では2.2がサポートされている
https://github.com/openframeworks/openFrameworks/tree/master/addons/ofxOpenCv/libs/opencv
ただしOpenCVの機能全部を網羅している訳ではないみたいで、必要な人が必要な部分をラッパーライブラリ化しているようです。
https://github.com/cinder/Cinder-OpenCV
ラッパーライブラリのファイル名を眺めた限りですが、現時点ではoFよりサポートしている範囲が広そう。
https://github.com/cinder/Cinder-OpenCV/tree/master/lib/macosx
まずは大掴みに把握したかったのでひとまずこんな感じで。
oFとCinderはベースがC++なのでラッパーライブラリなくとも読みこめば使えるはず(歯がたたないけど)。またウェブカムやKinectでキャプチャした画像を解析するのをoFやCinderで行ってOSC経由でFlashでそのデータを利用することも、同じ動画を参照できて転送データ量が速度的に問題なければできそう(実際やってる人もいるし)。これ以外でも何かわかったら追記します。
OpenCV1.1preと2.3両方を落としてきました。
そこで質問なんですが、
OpenCV1.1preのときにはあった、.lib等の各ファイル(dll,hpp…)が2.3のデータフォルダには同梱されていないということはあり得るのでしょうか?
あるいはリネームや置換場所(パス)などの関係で当方が確認できていないだけなのでしょうか?
-この場合次の、cxcore.lib,ml.lib,cvaux.libなどはどのように、リネーム、置換されているのでしょうか?
長文ですいませんが最後に聞いておきたいことが1.1preに対して。2.2はパッチというか導入追加版と
いう認識で、独自でデータフォルダの階層を作成し、そこに適時必要な.lib等を自分で置換する、
といったやり方のほうが理想なのでしょうか?
(難しいですかね…)
長い上、面倒かと思いますが、ご返答いただけるやつだけでもお答えいただけると助かります。
どうかお願いします。
お返事かなり遅くなってしまってすいません。
Windows環境における1.1preと2.3のファイル構成における差分は何か、ということですよね。
ぼくもそこまで詳しいことはわからないのですが、最近出たOpenCV2プログラミングブックに1.x系と2.x系の差分が載ってましてそれは以下の通りでした。
・cv名前空間の導入(2.0系におけるC++インターフェイスはすべて名前空間cvに属している)
・関数名の変更(関数名の頭にcvがついていたものは上記名前空間の導入に伴って、cvを取る形でリネームされている)
・IplImage型とcvMat型はcv::Matへ統合されている
・リソース管理の自動化(コンストラクタ/デコンストラクタの利用が可能に)
・テンプレートの導入
・演算子のオーバーロード
同書籍によると1.x系と2.x系の命令を混ぜて記述することもありうるニュアンスでしたよ。つまりパッチというよりリプレースという感じじゃないでしょうか。メジャーアップデートですし。