先日実装したOpenCvSharpのエラーハンドリング機能ですが、早くも暗雲が立ち込めております。
OpenCV 1.1preでは、cvLoadは使う前にあらかじめcvの関数を呼んでおかないとエラーになるようです。http://www.codeproject.com/KB/cs/Intel_OpenCV.aspx?msg=2784187 http://www.openframeworks.cc/forum/viewtopic.php?f=10&t=1853よって、何かcvの関数、…
OpenCVの新しいバージョンが、ベータ版ですがリリースされたようです。http://sourceforge.net/projects/opencvlibrary/しかしバージョン番号がよくわかりません。上のSourceForgeのダウンロードページでも、ボタンには2.0とありますが、ファイル名やインス…
cvRedirectErrorに設定するコールバック関数を独自に設定することで、エラーの際に従来のようなメッセージボックスによるエラーメッセージの表示ではなく、.NET Frameworkの例外が投げられるようになりました。
この前ハリヤを買う時に、実家の母にも電動アシスト買ったらどうかとそそのかしまして、結局二人同時に買うことにしました。この度実家に帰って試し乗りしてみた感触をハリヤと比較して書いてみます。メーカーのサイト: http://products.jp.sanyo.com/enelo…
Visual Studio では、ブレークポイントで止めた時に以下の図のように変数の中身を視覚的に見ることができます。ここで見られるのは普通は数値や文字列ぐらいに限られます。しかし例えばUriクラスならば、そのUriの示す先のWebページが見られたりしたら、(実…
その1 その2 その3 その4 その5 ずいぶんと前回から間が空いてしまいました。今回は、フォームに張り付けてIplImageをすぐに表示できるPictureBoxIplコントロールの紹介です。即席で作ったものなのであまり作りこんでいないのですが、表示させる際にIplImage…
http://cycle.panasonic.jp/products/electric/ENH.htmlずっと電動アシスト自転車欲しい欲しいと思って構想4年、ついに買ってしまいました。通学や散策に使おうと思ってます。今思うと、こちらとかこちらにもあるように、20ちょっとのガキんちょが乗るには過…
Linux等のWindows以外の環境でOpenCvSharpのMachineLearning(機械学習)やBlob(ラベリング)を利用するためには、ネイティブで書かれたラッパー「OpenCvSharpExtern」を自力でコンパイルしなければなりません。この度、CMakeによって多少楽にできるようにしま…
今度研究室でOpenCV勉強会というのをすることになったのですが、そのネタにと思い、id:yaneurao:20090802 を参考にはてなの画像認証をクラックしてみました。CAPTCHAの画像をHTMLを解析して自動収集するところから書き始めたりして、全然30分では終わらず3時…
通常のforであれば、このような場合にはgotoが未だに健在です。しかし、以下のコードは、まあいかにもダメそうですがやはりコンパイルできません。delegateを作った時点ではラベルが認識されていないようです。 Parallel.For(0, 20, delegate(int i) { for (…
結構前から、OpenCvSharpのGoogle Codeで、Wikiを編集しようとしても500 Server Errorが出て何もできないという状態が続いていました。かくなるうえは削除、と思っても、それも Update Collision が出るため、できませんでした。
OpenCvSharp.dllの部分についてはすべてDllImportかC#のみで実装し直したため、OpenCvSharpで書かれた大抵のプログラムは、そのままバイナリをLinux等へ持っていくだけでMonoで動作します。きっと。 MachineLearningとBlobについてはOpenCvSharpExtern.dllを…
リリースしてあるものではなくてSVNの方の最新版の話ですが、当方で試してみた限りでは、2005 SP1が無い場合はBadImageFormatExceptionが出ました。2008 SP1の方は、アンインストールしても動いたので、たぶん要らないような気がします。ということで、以後…
多大なる苦労の末、ようやく動きました。動かすまでの手順をものすごく大雑把に書けば、以下のようになります。 MonoやOpenCVをインストール OpenCvSharpExtern.dllはWindowsバイナリなので、LinuxバイナリであるlibOpenCvSharpExtern.soをつくる libcv.so.2…
またまた内部仕様が変わりまくりです。既にコア部分の対応は大体終わっていて、windows版のmono2.4では動作を確認できました。残るはMLやBlobの部分で、この辺りはC++/CLIで実装してあるので、これを全部やめてC#で書き直さなければなりません。しかし、ここ…
ポインタから値を読み取るメソッドとして、Marshal.ReadByte, Marshal.ReadInt16, Marshal.ReadInt32, Marshal.ReadInt64 があります。すなわち、byte, short, int, long についてはこれらのメソッドを使うことで、unsafeを使うこと無くポインタの実体の値を…
その1 その2 その3 その4 今回はcvSmoothを使った平滑化です。 ただし、画像に対して平滑化をかけるのではサンプルと比べて代わり映えもしませんので、ここでは普通のマネージ配列に対してガウシアンフィルタをかけてみます。今回はほとんど説明は無し。
新しいバージョンをリリースしました。WPF関連はOpenCvSharp.Extensions名前空間に追いやって、コアの部分は2.0で動くようになりました。これで欠点の一つは克服。プログラミング.NET Framework 第4版 (プログラミングシリーズ)作者: Jeffrey Richter,藤原雄…
名前空間が長すぎてうんざりしますが、つまりGDI+のBitmapから、WPFのBitmapSourceに変換しようということです。 using System.Drawing; using System.Runtime.InteropServices; using System.Windows; using System.Windows.Controls; using System.Windows…
その1 その2 その3 今回はIplImageと並んで重要な配列オブジェクトであるCvMatについてご説明しようと思います。CvMatを使う例としてここではcvFilter2Dを用いたフィルタリング処理を行います。
その1 その2 今回は読み込んだカラー画像をグレースケールに変換します。OpenCVの関数にはグレースケール画像しか受け付けないというものが相当数存在するので、これは重要な処理です。 (最初からLoadMode.GrayScaleにしてグレースケールで読み込めばいいじ…
コメントにご質問があったので、少し長くなりそうなのでこちらで書かせてもらいます。構造体とポインタ(若しくはバイト配列)との相互変換を行う方法については以前紹介しましたが、あの時の例はあえてごく簡単な構造体にしてありました。今回はメンバとし…
現在OpenCvSharpは.NET Framework 3.5が必要ですが、これを2.0にしたいと考えていて、今書き直し中です。この前「もう仕様はあまり変わらない」とか言っておきながらやや心苦しいですが。理由としては.NET Framework 2.0の普及率の高さやVisual Studio 2005…
七重浜方面を写したものです。いつもなら青森県側が見えるあたりに、「あれ、こんな山あったっけ?」というような山が見えて、そこに雲がかかってちょっといい感じでした。 函館どつくのゴライアスクレーンを撤去するために船でやってきたらしいクレーンが、…
今回は画像を読み込んで表示したりします。 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…
※NuGetパッケージを公開しました。この記事より簡単に導入できますので、今後はNuGetをお勧めします。説明は以下から。 http://schima.hatenablog.com/entry/2013/12/15/110513 開発がひとまず一段落し、もう今後大きく仕様が変わることはなさそうなので、こ…
OpenCVのML(Machine Learning : 機械学習)のラップが完了しました。厳密にはやや抜けているメソッドがあるのですが、おそらく使えるレベルにはなったはずです。 残るはcvauxのみ。OpenCVの次のリリースに間に合うかどうか。 http://opencv.jp/opencv-1.1.0/d…
marshal_as, marshal_contextについては、以前に文字列の変換における利用方法を書きました。今回は独自の変換を行う方法について書きます。
TortoiseSVNでコミットなどをする際に、リポジトリによってはIDとパスワードを入力することを求められます。この認証の際に入力情報を保存するチェックを入れると、以後は認証画面は出なくなります。しかし、何らかの理由で別のIDで入りたくなった場合に困る…