OpenCvSharpをつかう その13(導入時のエラーについて)

13回目にして今更導入時の不具合とはなんとも変な話ですが、OpenCvSharpが動かないというケースを時々耳にします。はっきり聞いているわけではないのでよくわからないのですが、わかる限りの解決策を書いておきます。どうやらBadImageFormatExceptionが多いらしい?

OpenCvSharpをつかう 記事一覧

続きを読む

OpenCvSharpをつかう その12 (ラベリング)

【注意】

この記事の内容は古く、最新のOpenCvSharpでは動作しません。記録としてあえて残しますが、ラベリングについては以下の記事を参照してください。
http://schima.hatenablog.com/entry/2014/01/19/120540


ラップしたときに少しだけ書いていますが(http://d.hatena.ne.jp/Schima/20090404)、改めてまとめておきます。

ラベリング処理はOpenCvSharp.Blob名前空間のクラスを用いることで行えます。利用に当たってはOpenCvSharp.Blob.dllへの参照設定が必要です。

OpenCvSharpではラベリングのライブラリとしてcvblobを利用しています(トップページにリンクも貼って頂いたようですね)。他にラベリングをするライブラリとしてはcvBlobsLibなどがあります。またcvauxにもあるらしいです。cvblobを選んだ理由としては、設計がシンプルでラップしやすかったためです。

続きを読む

OpenCvSharp x64版を公開

64bit版を公開しました。ずいぶんファイルが増えました。なおOpenCV1.1pre向けはそもそも1.1preがあまり64bitに対応していなさそうなので見送っています。(2.0も、まだまだという面はあります。)

http://code.google.com/p/opencvsharp/downloads/list


去年から研究室では64bitOSを使い始め、家でも先日Windows7にするついでに64bitにしてしまいました。ときどき面倒事もあるもののドライバや既存ソフトウェアの互換性に悩まされることもほとんどなく、またやはり研究目的ではもはや32bitに戻るのは考えられないと感じております。

例えば以下は1枚約1MBの画像を2.5K個、すなわち2.5GBぐらいのメモリを食うコードです。

IplImage[] images = new IplImage[1024 * 2 + 512];
for (int i = 0; i < images.Length; i++)
{
    images[i] = new IplImage(1024, 1024, BitDepth.U8, 1);
    images[i].Zero();
}

32bitでは1プロセスで使えるメモリは2GBまでらしいので、メモリが確保できず落ちます。

これが64bitなら問題なく確保できました。

これまでは途中計算の結果をファイルに書き出さざるを得ませんでしたが、これならオンメモリのまま処理が行えそうです。高速化が期待できます。また、今研究で扱っている処理でBitDepthが32ビット浮動小数点の画像を扱っていて、そもそもファイルに書き出しにくいという個人的な事情もあります。



64bit版のOpenCvSharpを利用するためには、当然64bit向けにビルドしたOpenCVのDLLが必要となります。cmakeで「Visual Studio 9 2008 Win64」といった64bit向けの設定でビルドファイルを作り、ビルドします。そして利用側では、プラットフォーム設定を「x64」にします。「Any CPU」でも動作するかもしれませんが、設定しておいた方が確実です。

もしBadImageFormatExceptionが出たら、どこかプラットフォームの設定が食い違っているということなので、見直しましょう。たまに、すべて合っているはずなのに直らず、再度DLLを置きなおしてみたら直るということがあります。詰まったら試してください。


Win32/64 APIシステムプログラミング―32/64ビットの共存

Win32/64 APIシステムプログラミング―32/64ビットの共存

OpenCvSharpをつかう その10 (Star Detector)

このところOpenCvSharpの使い方というよりはただのOpenCV 2.0の新機能紹介になっているこのシリーズですが、今回はStar Detector(日本語だとStar検出器?)のサンプルを作ってみたのでご紹介します。Star Detectorの関数はOpenCV 2.0で追加されました。

続きを読む