cvRedirectErrorはOpenCV2.0では使えない?

先日実装したOpenCvSharpのエラーハンドリング機能ですが、早くも暗雲が立ち込めております。

cvLoadのエラーについて

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 1.2(2.0?) でのcvの新しい関数 不完全一覧

OpenCVの新しいバージョンが、ベータ版ですがリリースされたようです。http://sourceforge.net/projects/opencvlibrary/しかしバージョン番号がよくわかりません。上のSourceForgeのダウンロードページでも、ボタンには2.0とありますが、ファイル名やインス…

エラーハンドリングに対応

cvRedirectErrorに設定するコールバック関数を独自に設定することで、エラーの際に従来のようなメッセージボックスによるエラーメッセージの表示ではなく、.NET Frameworkの例外が投げられるようになりました。

エネループバイク CY-SPA226 レビュー

この前ハリヤを買う時に、実家の母にも電動アシスト買ったらどうかとそそのかしまして、結局二人同時に買うことにしました。この度実家に帰って試し乗りしてみた感触をハリヤと比較して書いてみます。メーカーのサイト: http://products.jp.sanyo.com/enelo…

Debugger Visualizerを自作する

C#

Visual Studio では、ブレークポイントで止めた時に以下の図のように変数の中身を視覚的に見ることができます。ここで見られるのは普通は数値や文字列ぐらいに限られます。しかし例えばUriクラスならば、そのUriの示す先のWebページが見られたりしたら、(実…

OpenCvSharpをつかう その6 (PictureBoxIpl)

その1 その2 その3 その4 その5 ずいぶんと前回から間が空いてしまいました。今回は、フォームに張り付けてIplImageをすぐに表示できるPictureBoxIplコントロールの紹介です。即席で作ったものなのであまり作りこんでいないのですが、表示させる際にIplImage…

Panasonic ハリヤ (BE-ENH67) レビュー

http://cycle.panasonic.jp/products/electric/ENH.htmlずっと電動アシスト自転車欲しい欲しいと思って構想4年、ついに買ってしまいました。通学や散策に使おうと思ってます。今思うと、こちらとかこちらにもあるように、20ちょっとのガキんちょが乗るには過…

OpenCvSharpExternのバイナリを作る

Linux等のWindows以外の環境でOpenCvSharpのMachineLearning(機械学習)やBlob(ラベリング)を利用するためには、ネイティブで書かれたラッパー「OpenCvSharpExtern」を自力でコンパイルしなければなりません。この度、CMakeによって多少楽にできるようにしま…

はてなのCAPTCHAのクラック

今度研究室でOpenCV勉強会というのをすることになったのですが、そのネタにと思い、id:yaneurao:20090802 を参考にはてなの画像認証をクラックしてみました。CAPTCHAの画像をHTMLを解析して自動収集するところから書き始めたりして、全然30分では終わらず3時…

Parallel.Forの2重ループから脱出

C#

通常のforであれば、このような場合にはgotoが未だに健在です。しかし、以下のコードは、まあいかにもダメそうですがやはりコンパイルできません。delegateを作った時点ではラベルが認識されていないようです。 Parallel.For(0, 20, delegate(int i) { for (…

Google CodeのWikiが編集・削除できない時の対処

結構前から、OpenCvSharpのGoogle Codeで、Wikiを編集しようとしても500 Server Errorが出て何もできないという状態が続いていました。かくなるうえは削除、と思っても、それも Update Collision が出るため、できませんでした。

Mono対応版リリース

OpenCvSharp.dllの部分についてはすべてDllImportかC#のみで実装し直したため、OpenCvSharpで書かれた大抵のプログラムは、そのままバイナリをLinux等へ持っていくだけでMonoで動作します。きっと。 MachineLearningとBlobについてはOpenCvSharpExtern.dllを…

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#で書き直さなければなりません。しかし、ここ…

ポインタからfloat,doubleの値を読み取る

C#

ポインタから値を読み取るメソッドとして、Marshal.ReadByte, Marshal.ReadInt16, Marshal.ReadInt32, Marshal.ReadInt64 があります。すなわち、byte, short, int, long についてはこれらのメソッドを使うことで、unsafeを使うこと無くポインタの実体の値を…

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

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

.NET Framework 2.0に対応させた

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

System.Drawing.Bitmap を System.Windows.Media.Imaging.BitmapSource に変換する

名前空間が長すぎてうんざりしますが、つまりGDI+のBitmapから、WPFのBitmapSourceに変換しようということです。 using System.Drawing; using System.Runtime.InteropServices; using System.Windows; using System.Windows.Controls; using System.Windows…

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

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

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

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

メンバに配列を持つ構造体のマーシャリング

C#

コメントにご質問があったので、少し長くなりそうなのでこちらで書かせてもらいます。構造体とポインタ(若しくはバイト配列)との相互変換を行う方法については以前紹介しましたが、あの時の例はあえてごく簡単な構造体にしてありました。今回はメンバとし…

.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…

独自のmarshal_as/marshal_contextの定義

marshal_as, marshal_contextについては、以前に文字列の変換における利用方法を書きました。今回は独自の変換を行う方法について書きます。

TortoiseSVNの認証データを消す

PC

TortoiseSVNでコミットなどをする際に、リポジトリによってはIDとパスワードを入力することを求められます。この認証の際に入力情報を保存するチェックを入れると、以後は認証画面は出なくなります。しかし、何らかの理由で別のIDで入りたくなった場合に困る…