OpenCvSharp

Visual C++ Redistributable

リリースしてあるものではなくてSVNの方の最新版の話ですが、当方で試してみた限りでは、2005 SP1が無い場合はBadImageFormatExceptionが出ました。2008 SP1の方は、アンインストールしても動いたので、たぶん要らないような気がします。ということで、以後…

Ubuntu9.04 + Mono2.4 で動作確認

多大なる苦労の末、ようやく動きました。動かすまでの手順をものすごく大雑把に書けば、以下のようになります。 MonoやOpenCVをインストール OpenCvSharpExtern.dllはWindowsバイナリなので、LinuxバイナリであるlibOpenCvSharpExtern.soをつくる libcv.so.2…

mono対応に書き換え中

またまた内部仕様が変わりまくりです。既にコア部分の対応は大体終わっていて、windows版のmono2.4では動作を確認できました。残るはMLやBlobの部分で、この辺りはC++/CLIで実装してあるので、これを全部やめてC#で書き直さなければなりません。しかし、ここ…

OpenCvSharpをつかう その5 (平滑化)

その1 その2 その3 その4 今回はcvSmoothを使った平滑化です。 ただし、画像に対して平滑化をかけるのではサンプルと比べて代わり映えもしませんので、ここでは普通のマネージ配列に対してガウシアンフィルタをかけてみます。今回はほとんど説明は無し。

.NET Framework 2.0に対応させた

新しいバージョンをリリースしました。WPF関連はOpenCvSharp.Extensions名前空間に追いやって、コアの部分は2.0で動くようになりました。これで欠点の一つは克服。プログラミング.NET Framework 第4版 (プログラミングシリーズ)作者: Jeffrey Richter,藤原雄…

OpenCvSharpを使う その4 (フィルタリング)

その1 その2 その3 今回はIplImageと並んで重要な配列オブジェクトであるCvMatについてご説明しようと思います。CvMatを使う例としてここではcvFilter2Dを用いたフィルタリング処理を行います。

OpenCvSharpを使う その3 (グレースケールに変換)

その1 その2 今回は読み込んだカラー画像をグレースケールに変換します。OpenCVの関数にはグレースケール画像しか受け付けないというものが相当数存在するので、これは重要な処理です。 (最初からLoadMode.GrayScaleにしてグレースケールで読み込めばいいじ…

.NET Framework 2.0へ対応させたい

現在OpenCvSharpは.NET Framework 3.5が必要ですが、これを2.0にしたいと考えていて、今書き直し中です。この前「もう仕様はあまり変わらない」とか言っておきながらやや心苦しいですが。理由としては.NET Framework 2.0の普及率の高さやVisual Studio 2005…

OpenCvSharpを使う その2 (画像の読み込み)

今回は画像を読み込んで表示したりします。 class Program { static void Main(string[] args) { IplImage img = Cv.LoadImage("lenna.png"); Cv.NamedWindow("window"); Cv.ShowImage("window", img); Cv.WaitKey(); Cv.DestroyWindow("window"); Cv.Releas…

OpenCvSharpを使う その1 (準備)

※NuGetパッケージを公開しました。この記事より簡単に導入できますので、今後はNuGetをお勧めします。説明は以下から。 http://schima.hatenablog.com/entry/2013/12/15/110513 開発がひとまず一段落し、もう今後大きく仕様が変わることはなさそうなので、こ…

MLのラップ完了

OpenCVのML(Machine Learning : 機械学習)のラップが完了しました。厳密にはやや抜けているメソッドがあるのですが、おそらく使えるレベルにはなったはずです。 残るはcvauxのみ。OpenCVの次のリリースに間に合うかどうか。 http://opencv.jp/opencv-1.1.0/d…

アンマネージ関数にdelegateを渡すと落ちるのは解決

delegateとかアンマネージとかあまり関係有りませんでした、すみません。Releaseモードだとオブジェクトの生存期間が変わってしまうのが原因でした。基本的には以下のページと同様の現象です。http://blogs.wankuma.com/shuujin/archive/2007/05/15/76794.as…

アンマネージ関数にdelegateを渡すと落ちる

前回の記事の件で訂正。もう少し探っていくと、2重のdelegateでなくとも単にアンマネージ関数に空のdelegateを渡すだけでも落ちていました。お手上げ状態なのは相変わらずです。GCが発動すると落ちるということしかわかっていません。そのアンマネージ関数と…

GoogleCodeにお引越し

今までリポジトリはCodeReposにありましたが、ここ1週間かけてsvnsyncを敢行し、GoogleCodeに移しました。以前からOpenCvSharpはGoogleCodeとCodeReposの2つのページがあってよくわからない状況になっていました。これには事情があって、最初はCodeReposで、…

cvのコメント英語化完了

おかげさまで行数が天井知らずに増えております。あとはcxcoreの方をやればほぼ終わったも同然になります。終わった暁には、XMLドキュメントコメントが日英両対応という素敵な状態になります。コンピュータビジョン ―アルゴリズムと応用―作者: Richard Szeli…

ConvexHull2をラップ

Convex Hullは日本語では凸包と訳されます。平面上の点がいっぱいあったとき、その一番「外側」の点を結んでできた線です。 cvConvexHull2の返り値のCvSeqから凸包の頂点を取り出す際、2重ポインタ(CvPoint**)が出てくるためその扱いに苦慮しています。今の…

cvblobをラップ

少し前に要望が有ったので、組み込んでみました。まだ進捗は半分程度といったところですが、サンプルは動きました。 ソースはこのような感じです。ほぼcvblob付属のtest.cppの直訳です。 using (IplImage img = new IplImage("shapes.png", LoadMode.Color))…

OpenCvSharp2

C#で書き直していましたがおそらく全て終わりました。拡張メソッドを使うことで結構省力化できたように思います。大体C++/CLI実装と互換性はあるんじゃないかと思いますが、やや変えてる部分はあります。 また、なんとコミッタさんが現れたため、未実装の関…

FindContoursを実装

CvSeqを使う関数は何かとラッパー的に面倒なので避け気味なのですが、頑張って実装しました。最近たまっていた分を含めてリリースしておきました。Sandcastleのバージョンを上げたので、以前よりもヘルプが見やすくなっていると思います。 以下の画像はOpenC…

アンマネージ関数の動的呼び出し

C#でアンマネージな関数を使いたければ、DllImportを使うのが常道です。しかし、定義の際に必ずstaticをつけることからもわかるように、静的な定義であり、プログラムの実行中に動的に関数名を決めてロード、といったことはできません。C/C++ではWin32APIのL…

ステレオマッチング (cvaux)

cvFindStereoCorrespondenceBM, cvFindStereoCorrespondenceGCのほかに、cvauxの方にもcvFindStereoCorrespondenceという関数があります。こちらもラップしてみました。 http://opencv.jp/opencv-1.1.0/document/opencvref_cvaux.html#decl_cvFindStereoCorr…

エピポーラ幾何、ステレオマッチングの実装

こちらのページの関数をすべてラップしました。まだリリースはしてません。 http://opencv.jp/opencv-1.1.0/document/opencvref_cv_epipolar.html cvFindStereoCorrespondenceBMとcvFindStereoCorrespondenceGCを試しに動かしてみました。先ほどのOpenCVリフ…

CvEMを実装

まだリポジトリに上げただけですが、CvEMを最低限動くところまでラップしました。 EMアルゴリズムは疎いのでロクに説明はできません。こちらをご覧下さい。http://opencv.jp/opencv-1.1.0/document/opencvref_ml_em.html#ch_em このページの下にあるサンプル…

CvSVMを実装

ひととおりCvSVMをラップしました。 CvSVMなどのC++のクラスで実装されている機械学習関連のものは、MachineLearningという新しい名前空間でラップしました。 これでこちらのサンプルが動きます(下2つは学習ファイルが無いので未確認)。 http://opencv.jp/…

cvFilter2D, cvCopyMakeBorder, cvIntegral を実装

cvFilter2D, cvCopyMakeBorder, cvIntegral 関数をラップしました。これで、以下のページのサンプルが全部動きます。たぶん。 http://opencv.jp/sample/filter_and_color_conversion.html詳解 OpenCV ―コンピュータビジョンライブラリを使った画像処理・認識…

x64環境でのOpenCvSharp

最近研究室のPCが64bit版のWindows Vistaになったのですが、それからというものOpenCvSharpを呼び出している研究のプログラムがBadImageFormatExceptionを吐いて全く動かなくなってしまいました。 あれ?.NETってそういう環境の違いうまく吸収してくれるんじ…

SURFのサンプルをラップ

下の記事でラップしたCV.ExtractSURFを用いて、OpenCV/samples/c/find_obj.cppをC#に書き換えて動作させることに成功しました。ただ、妙に重いのが謎です。ポインタによるアクセスを避けている分のオーバーヘッドは覚悟しているのですが、ここまで重くのなる…

cvExtractSURF

せっかくOpenCV1.1preに対応したということで、新たに実装されたらしいSURF(Speeded Up Robust Features)の関数をラップしてみました。 cvExtractSURFの定義は以下の通り。(cv.hの1111行目あたり) CVAPI(void) cvExtractSURF( const CvArr* img, const CvArr…

OpenCvSharp 1.1pre

時間があったのでOpenCV1.1pre向けのものを公開してみました。http://code.google.com/p/opencvsharp/downloads/listOpenCvSharpのバージョン番号はOpenCVと同期させることにしました。細かいバージョンは、どのタイミングでどれぐらい上げたらいいのかとか…

キャプチャしたIplImageをWriteableBitmapに変換すると反転する問題

Bitmapの方を片づけて一息ついてしまいましたが、当然この問題はWriteableBitmapでも起こるわけで。WriteableBitmapの方には反転する良いメソッドが見当たらなかったので、こちらはcvFlipで解決させました。 研究のプログラムはWPFで作っているので、個人的…