OpenCV Wrappers

OpenCVのラッパーが結構たくさん一覧になっています。

http://www.eyegazetracking.com/2008/10/opencv-wrappers.html

今回は.NET Framework向けのラッパーのみに絞って、過去に触ってみた感想を書いてみます。なお、大して時間をかけて使ってみた訳ではないのでとんちんかんな事を書いているかもしれません。

SharperCV

http://www.cs.ru.ac.za/research/groups/SharperCV/
おそらく一番知名度が高いです。ということでOpenCvSharpを開発する前にはこれを最初に試したのですが、導入で大いにコケて、なんとかごり押しで入れたものの「関数少なそうだなー」という印象を持ってしまってパス。

OpenCVDotNet

http://code.google.com/p/opencvdotnet/
知名度はSharperCVの次点? 悪くないです。WindowsFormアプリケーションのコンポーネントも入ってます。ただ、これもどこか関数不足に見えました。


上記2つを試した時点で、自前のラッパーの開発を決定。使う関数だけラップしてもよかったのに、調子に乗ってガンガン書いていたらいつの間にかすごい規模になり、公開。そして今に至ります。

以下2つは比較的最近知ったものです。

DirectCV

http://code.google.com/p/directcv/
名前の通り、OpenCVの関数をP/Invokeでダイレクトに呼ぶ感じです。関数は多いです。我がOpenCvSharpとほぼ互角か?

クラスのラッパーもあるのですが、例えば画像を読み込むときは

CvImage img = new CvImage(CV.LoadImage("hoge.jpg", CvLoadImage.Color)); 

のようにしなければならないようで、面倒です。

Emgu CV

http://www.emgu.com/wiki/index.php/Emgu_CV
知る限りではおそらく最強。Imageとか Matrix のようにジェネリックが使えるのでかなり先進的です。多分この先も敵わないと思います。これを先に知っていればラッパー書かなかったかも。

ただ、逆に言うとラッパーの皮が厚いということで、私のようにサンプルコードに少し付け足すぐらいしか書けない人間には、新たにラッパーの使い方を覚えるという作業の比率が多くなります。



以上のライバル達のことを踏まえた上で、我がOpenCvSharpの立ち位置を明確にしておきましょう。

OpenCvSharp

http://coderepos.org/share/wiki/OpenCvSharp
DirectCVに思想は似ているんですが、C++/CLIの段階でクラスでラップしているので、構造体のメンバにもすぐアクセス可能。でも皮が厚すぎるとサンプルからの翻訳に苦労するので、サンプルをコピーしてきてC#っぽく書き直せば動く、というところを大事にしたい。で、ちょっと楽できる(主に解放処理)。

・・・というのを目指してやっております。