2009-03-01から1ヶ月間の記事一覧

ジェネリック関数の返り値

C#

以下のコードはコンパイルが通りません。doubleはstructですし、ifの中はTがdoubleの時しか絶対に実行されないので良さそうなものですが、ダメです。 T Hoge<T>() where T : struct { if(typeof(T) == typeof(double)) { double r2 = 1.41421; return r2; } els</t>…

XMLドキュメントコメントを多言語で書きたい

C#

のですが、いい方法はないものか・・・・。 とかのタグにlang="ja"とかあったらなあと思いましたがあるわけもなく。 思いついたのはこんな方法です。 #if LANG_JP /// /// 日本語 /// /// 正の数 #elif LANG_DE /// /// Deutsch /// /// eine positive Zahl …

ラッパーのメモリ管理

C#

C#でC/C++のライブラリのラッパークラスを作るときの基本形は、こんな感じになると思います。 class HogeWrapper : IDisposable { IntPtr ptr; public HogeWrapper() { ptr = createHoge(); } public void Dispose() { releaseHoge(ptr); } [DllImport("hoge…

ポインタの加減算・マネージ配列のポインタ取得

C#

※追記:.NET Framework4以降における方法 http://schima.hatenablog.com/entry/2013/10/08/003445現在OpenCvSharpをC#メインで書き直し中です。C++/CLIに比べるとVisualStudioの支援が手厚く、コンパイルも圧倒的に速いので作業効率は良いです。しかしラッパ…

C++/CLIでの定数の定義 改

id:Schima:20090228 で、C++/CLIにてinitonlyにより定数っぽいもの(readonly)を定義する方法をご紹介しましたが、やはり厳密な意味での定数ではないために困ることがあります。この方法では、コンパイル時に定数が必要な場合には使えません。 例えばenumの初…

納得いかないこと

最近プログラムを書いていてちょっと納得いかなかったことをいくつか。

FindContoursを実装

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

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

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

動的配列

C C# C++

だいぶ前に書いたちょっとしたメモのせいで、このブログに「C/C++/C# 動的配列」といったキーワードで飛んでくる方が結構いるみたいです。大して書いてなくて申し訳ないので勉強兼ねてまとめときます。

ステレオマッチング (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リフ…