OpenCVsharp の検索結果:

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

先日実装したOpenCvSharpのエラーハンドリング機能ですが、早くも暗雲が立ち込めております。 OpenCV2.0 beta現在での、cvRedirectError関数の実装はこうなっています(src/cxcore/cxsystem.cpp 248行目)。 CV_IMPL CvErrorCallback cvRedirectError( CvErrorCallback, void*, void** ) { return 0; } ・・・ひどい絶望感です。 OpenCVのr…

cvLoadのエラーについて

…0, 0); 今回のOpenCvSharpの更新で、内部であらかじめcvの呼び出しを行うようにしたので、Cv.Loadメソッドを最初に使ってもエラーは起こらなくなりました。内部でCv.Loadを使っているCvHaarClassifierCascade.FromFileなども同様です。 OpenCVの新しいバージョンではこの問題は解決されたのでしょうか?気になります。 Essential OpenCV Programming―With Visual C++ 2008作者: 谷尻…

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

…れていました。この後OpenCvSharpではAccessViolationExceptionが発生して落ちる、という流れになっていました。しかしどうせならAccessViolationExceptionではなくOpenCVのエラーが例外として発生する方がスマートです。今回の更新で、以下のように例外がOpenCVExceptionとして発生するようになりました。これにより例外をtry-catchで捕捉したりできます。もっと早く実装するべきでした・・・ なお、もし従来のメッセー…

OpenCvSharpをつかう その6 (PictureBoxIpl)

…を利用するためには、OpenCvSharp.dllのほかに、OpenCvSharp.UserInterface.dllを参照に加える必要があります。「参照設定」から、DLLを追加します。 ツールボックスに追加 Form1.csのデザイナ画面上で、ツールボックスを右クリックし、「アイテムの選択」を選ぶと以下のようなダイアログが出ます。ここで「参照」をクリックし、二度手間になりますがもう一度先ほど同様に OpenCvSharp.UserInterface.dll を追加します。す…

OpenCvSharpExternのバイナリを作る

…dows以外の環境でOpenCvSharpのMachineLearning(機械学習)やBlob(ラベリング)を利用するためには、ネイティブで書かれたラッパー「OpenCvSharpExtern」を自力でコンパイルしなければなりません。この度、CMakeによって多少楽にできるようにしました。(まだリリースはしていません。リリースはOpenCV 2.0が出た直後を予定しています。) CMakeとは cross platformなmakeの略だそうで、様々なプラットフォームにおけ…

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

結構前から、OpenCvSharpのGoogle Codeで、Wikiを編集しようとしても500 Server Errorが出て何もできないという状態が続いていました。かくなるうえは削除、と思っても、それも Update Collision が出るため、できませんでした。 そこでGoogle Codeのサポートページを見てみます。結構見つけるのに時間がかかりました。 http://code.google.com/p/support/ その中でも怪しいのはこのあたりのページ。 …

Mono対応版リリース

OpenCvSharp.dllの部分についてはすべてDllImportかC#のみで実装し直したため、OpenCvSharpで書かれた大抵のプログラムは、そのままバイナリをLinux等へ持っていくだけでMonoで動作します。きっと。 MachineLearningとBlobについてはOpenCvSharpExtern.dllをその環境でコンパイルしなおす必要があります。OpenCvSharpExternのソースを入手して、そのディレクトリで以下のようなコマンドを実行すると、li…

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

…CVをインストール OpenCvSharpExtern.dllはWindowsバイナリなので、LinuxバイナリであるlibOpenCvSharpExtern.soをつくる libcv.so.2.0.0 等のOpenCVのライブラリファイルを /usr/local/lib 辺りからコピーしてきて、libcv110.so のように名前変更 libOpenCvSharpExtern.so や libcv110.so 等のライブラリを全て実行ファイルと同じディレクトリに置いた状態で…

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

…ic; using OpenCvSharp; namespace ConsoleApprication1 { static class Program { static void Main() { // ランダムなfloat配列を作る Random rand = new Random(); float[] array = new float[32]; for (int i = 0; i < array.Length; i++) { array[i] = rand.Next(0…

.NET Framework 2.0に対応させた

新しいバージョンをリリースしました。WPF関連はOpenCvSharp.Extensions名前空間に追いやって、コアの部分は2.0で動くようになりました。これで欠点の一つは克服。プログラミング.NET Framework 第4版 (プログラミングシリーズ)作者: Jeffrey Richter,藤原雄介出版社/メーカー: 日経BP社発売日: 2013/10/10メディア: 単行本(ソフトカバー)この商品を含むブログ (4件) を見る

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

…ルコードから拝借し、OpenCvSharp仕様に書き換えたものです。 http://opencv.jp/sample/filter_and_color_conversion.html#filter2d 詳細についてはこちらのページをご覧ください。ここでは主に、OpenCvSharpではどう書くか、という内容に絞って説明します。あまりcvFilter2DやcvNormalizeの詳しい説明はしません(というかできない・・・)。 using System; using OpenC…

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

…em; using OpenCvSharp; namespace ConsoleApplication1 { class Program { static void Main(string[] args) { using (IplImage src = Cv.LoadImage("penguin.png", LoadMode.Color)) using (IplImage dst = Cv.CreateImage(new CvSize(src.Width, src.Heigh…

.NET Framework 2.0へ対応させたい

現在OpenCvSharpは.NET Framework 3.5が必要ですが、これを2.0にしたいと考えていて、今書き直し中です。この前「もう仕様はあまり変わらない」とか言っておきながらやや心苦しいですが。理由としては.NET Framework 2.0の普及率の高さやVisual Studio 2005で開発したいというニーズがまだある(らしい)こともありますが、マルチプラットフォーム化の野望への布石だったりもします。まだmonoでは.NET Framework 3.5は動…

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

…き方をご紹介します。OpenCvSharpをつかう 記事一覧 画像の読み込み Cv.LoadImageを使います。引数には読み込む画像ファイルのパスを指定します。 http://opencv.jp/opencv-1.1.0/document/opencvref_highgui_loadsave.html#decl_cvLoadImage IplImage img = Cv.LoadImage("lenna.png"); 実行すると、このように読み込んだ画像が表示されるはずです…

OpenCvSharpを使う その1 (準備)

…これから何回かかけてOpenCvSharpの導入の仕方や、使い方、サンプルなどを紹介していこうと思います。 実のところ、開発しておきながら自分ではあまり使っていないという事情もあるので、使い心地を確かめるという意味もあります。OpenCvSharpをつかう 記事一覧 OpenCvSharpについて OpenCvSharpは、画像処理などを行うライブラリであるOpenCVを、.NET Frameworkの言語(主にC#を想定)から利用するためのラッパーです。https://gi…

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

…というのが実情です。OpenCvSharpでは、CvSeqと普通の配列(int[]など)とを相互に変換する機能があるので、CvSeqをマネージドな世界に落とし込んでしまえば大概は何とかなるような気もしています。 // CvSeq<int> -> int[] int[] array = seq.ToArray(); // int[] -> CvSeq<int> CvSeq<int> seq = CvSeq<int>.FromArray(array, SeqType.Eltype…

GoogleCodeにお引越し

…移しました。以前からOpenCvSharpはGoogleCodeとCodeReposの2つのページがあってよくわからない状況になっていました。これには事情があって、最初はCodeReposで、と思っていたもののなかなか加入申請の返事が来ず、じゃあ諦めてGoogleCodeで、と思いこのページを作りました。 http://code.google.com/p/opencvsharp/ しかしこのページがほぼ完成した頃になってCodeReposの加入の知らせが来て、CodeRepo…

OpenCvSharp2

C#で書き直していましたがおそらく全て終わりました。拡張メソッドを使うことで結構省力化できたように思います。大体C++/CLI実装と互換性はあるんじゃないかと思いますが、やや変えてる部分はあります。 また、なんとコミッタさんが現れたため、未実装の関数も続々追加されています。 C++/CLIは完全にやめたわけではなく、まだ主に構造体のメンバにアクセスする用途で使っています。C#のstructだけでマーシャリングすることも可能ではありますが、C#とCの構造体とでいかに同期をとるか…

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

C#

…8/003445現在OpenCvSharpをC#メインで書き直し中です。C++/CLIに比べるとVisualStudioの支援が手厚く、コンパイルも圧倒的に速いので作業効率は良いです。しかしラッパーというのは結局のところポインタとの終わりなき戦いであり、そのあたりを.NET FrameworkのIntPtrだけで戦っていくのはなかなか厳しいものです。その分、C++/CLIは困ったら本物のポインタを持ち出せばよいのでどうにでもなります。で、今回はポインタのインクリメントといった…

FindContoursを実装

…ontour.c をOpenCvSharpでC#風に書き換えて実行したものです。微妙に怪しいながらも動いているようです。 using (IplImage img = new IplImage("foo.png")) using (CvMemStorage storage = new CvMemStorage()) { CvSeq contours; // native style Cv.FindContours(img, storage, out contours, CvCo…

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

…かくなのでこの機能をOpenCvSharpに組み込んでみました。ラップしてないのを使いたいという場合の急場しのぎに使える・・・かも。 delegate int SaveImageDelegate(String filename, IntPtr img); static void Main(string[] args) { IplImage img = new IplImage("lenna.jpg"); using (var invoker = new DynamicInvo…

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

…したKwsmLab.OpenCvSharp.Auxiliaryという名前空間に実装しました。 これまではC++/CLIで実装していましたが、AuxiliaryについてはC#でP/Invokeによる実装を試みています。こんなこともあろうかと、ラッパクラスからはCvPtrプロパティでネイティブのポインタが得られるようにしてあるので、なんとかいけるのではないかと踏んでいます。が、もしダメそうなら早々にまたC++/CLIになります。 実行結果はこのようになります。あってるのかは知りま…

x64環境でのOpenCvSharp

…、それからというものOpenCvSharpを呼び出している研究のプログラムがBadImageFormatExceptionを吐いて全く動かなくなってしまいました。 あれ?.NETってそういう環境の違いうまく吸収してくれるんじゃないの?と思っていましたが、それはどうやらC#で作った場合での話で、C++/CLIで作ったDLLにはネイティブコードが含まれるとかなんとかでダメなようです。 解決法は2つ。 C++/CLI側で、x64でビルドする 一番まともな感じです。が、なんかうまくで…

OpenCvSharp 1.1pre

…gle.com/p/opencvsharp/downloads/listOpenCvSharpのバージョン番号はOpenCVと同期させることにしました。細かいバージョンは、どのタイミングでどれぐらい上げたらいいのかとか面倒なのでこれまで通り日付で。ついでにDestroyAllWindowsしたらfor eachで怒られる問題などを修正しました。他にもまだ何か問題あるはずですがとりあえずこの辺で。詳解 OpenCV ―コンピュータビジョンライブラリを使った画像処理・認識作者: …

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

…g KwsmLab.OpenCvSharp; using System.Windows; using System.Windows.Controls; using System.Windows.Media; using System.Windows.Media.Imaging; using System.Windows.Threading; namespace Sample { static class Program { static void Main(string[] …

OpenCV1.1

OpenCvSharpのOpenCV1.1preへの対応は現在試行錯誤中なのですが、カメラキャリブレーションがうまく動かないため保留にしています。話によるとキャリブレーションは1.1ではもっと簡単にできるようになったとかならないとか。 とりあえずpreが取れるまでは様子見です。 詳解 OpenCV ―コンピュータビジョンライブラリを使った画像処理・認識作者: Gary Bradski,Adrian Kaehler,松田晃一出版社/メーカー: オライリージャパン発売日: 200…

OpenCV Wrappers

…いです。ということでOpenCvSharpを開発する前にはこれを最初に試したのですが、導入で大いにコケて、なんとかごり押しで入れたものの「関数少なそうだなー」という印象を持ってしまってパス。 OpenCVDotNet http://code.google.com/p/opencvdotnet/ 知名度はSharperCVの次点? 悪くないです。WindowsFormアプリケーションのコンポーネントも入ってます。ただ、これもどこか関数不足に見えました。 上記2つを試した時点で、…

卒業研究中間発表

…ないかと思います。 OpenCvSharpはまさしくこの卒研の為に作り始めたのですが、研究では結局のところOpenCVの機能としては二値化と平滑化ぐらいしか使っておらず、あとは自前でごりごり書いています。つまりあまり使っていません。 しかしOpenCvSharpのソースコードの行数は現在38450行、もはや目的と何かを履き違えています。そして本当に残念なことに、こういう「下準備」は論文には書けないのです。 理系のための「即効!」卒業論文術―この通りに書けば卒論ができあがる (…

OpenCV -> CV

OpenCvSharpの、OpenCVでいうcvなんたら関数の寄せ集めクラスである "OpenCV" クラスを "CV" に名前変更しました。これにより、 IplImage src = OpenCV.cvLoadImage("lenna.png", LoadMode.GrayScale); IplImage dst = OpenCV.cvCreateImage(new CvSize(src.Width, src.Height), BitDepth.U8, 1); OpenCV…

cvUndistort2を実装

かなり久しぶりにOpenCvSharpを更新しました。カメラキャリブレーションの為の関数をちょっとだけ実装しました。http://coderepos.org/share/changeset/20119OpenCvSharpは、OpenCVという画像処理の為のライブラリをC#から扱うためのラッパーです。卒業研究で作っているソフトウェアで画像処理が必要となったのですが、CとかC++でごりごり書くのがご勘弁願いたかったというのが開発の動機です。しかし今やOpenCvSharpのソー…