OpenCVsharp の検索結果:

MatAllocatorとGC

…えます。事実、以前のOpenCvSharpではこれに相当する処理を入れていました。 しかし現在は取りやめました。それは、GC.Add(Remove)MemoryPressureはスレッドのロックがかかるらしいためです。 この現象は、会社のシステムで使っていて、並列処理数が増えるにつれて急激に性能劣化が起きたことで気づきました。計算途中で作られる細かなMat1つ1つでロックがかかるのですから、そう思えば納得の状況ですが、何も知らない当時は全く奇怪な状態で大変疲弊しました。 おそ…

OpenCvSharpをつかう その24 (OpenCV 3.0のラベリング)

…、昔から添付しているOpenCvSharp.Blobに使い勝手を近づけたラッパーも作成しました。それも紹介します。 OpenCvSharpをつかう 記事一覧 使い方 元画像サンプル 準備 過去の記事同様ですが、二値化等の手法により、ラベル付けしたい領域が白、その他が黒である画像を用意します。 Mat src = new Mat("shapes.png", ImreadModes.Color); Mat gray = src.CvtColor(ColorConversionCo…

OpenCvSharpをつかう その23 (OpenCV 3.0対応)

…OpenCV3.0にOpenCvSharpをひとまず対応させました。 NuGet Gallery | OpenCvSharp3 3.0.0.20150823 Release 3.0.0 (16 Aug., 2015) · shimat/opencvsharp · GitHub 以下、簡潔に変更点・注意点を示していきます。 OpenCvSharpをつかう 記事一覧 C APIラッパー廃止 OpenCvSharp始まって7年、ずっと歩み続けてきたC APIを消しました。もうIpl…

OpenCV3.0alpha 変更点レビュー ~ラッパー開発者の視点から~

OpenCvSharpを3.0alphaに対応させる取り組みを始めました。なりふり構わず書き換え、まずはエラーが止まった段階のがこれです。Release 3.0alpha (08 Sep., 2014) · shimat/opencvsharp · GitHub2.0のときもひどい目にあいましたが、今回も何度くじけそうになったことやら。いや、現在進行形でくじけていますが。この道中で気づいたことを雑多に書き残します。新しいコンピュータビジョンのアルゴリズムがどうしたこうした、と…

OpenCvSharpをつかう その22 (Dependency Walker)

…が、少し前まででは OpenCvSharpを使おうと思った人の9割はP/Invokeエラーでつまづき、そのうち7割は脱落 という状態だった、きっとそう思います。これの(Windowsにおける)特効薬がDependency Walkerです。私はこれがWindowsにおけるもっとも有用なフリーソフトと信じています。TypeInitializationException等、よくわからない例外でこけたら、以下をお試しください。OpenCvSharpをつかう 記事一覧 エラーの一例 …

OpenCvSharpをつかう その21(C++ API 概要)

OpenCvSharpはもともとC言語のOpenCV 1.0 APIを対象に作っておりました。以来6年経ち、C++ APIが充実し主流になってきたため、そのサポートを進めています。ある程度は仕様が固まってきたので、使い方をご紹介していこうと思います。今回は大まかな概観です。2014/3/28リリース版をベースに書いています。OpenCvSharpをつかう 記事一覧 導入 おすすめはNuGetで。http://schima.hatenablog.com/entry/2013/1…

JavaScriptのコンピュータビジョンライブラリ「jsfeat」を試す

…ル 先日の記事にて、OpenCvSharp + ASP.NET + Ajax でCannyエッジ検出を実行するサンプルを公開していました。jsfeatを使えば、JavaScriptだけでそれが実現できてしまいます。Canny程度であれば充分高速です。jQuery UIによるスライダでCannyの2つの閾値を変化させると、それが即時にCanvas画像に反映されるサンプルです。記事の最初にも書きましたが、以下から実際に動作するものを閲覧できます。 http://notiz.fln…

OpenCvSharpをつかう 記事一覧

…らは本ブログの全てのOpenCvSharp関連記事が見られます。 http://schima.hatenablog.com/category/OpenCvSharp その1が2009年。OpenCvSharp自体の開発は2008年夏ごろからです。まさかこんなに長年開発を続けるとは。その1のスクリーンショットを見るとVisual Studio 2008、歴史を感じます。 出るとか出ないとか噂の公式.NETバインディングに超期待。足を洗う日が来るでしょうか。 GitHubリポジト…

OpenCvSharpをつかう その20(ASP.NET MVCで使う Ajax編)

…ET MVCの話で、OpenCvSharpの新しい話はありません。このシリーズに入れて良いのか微妙ですがご容赦ください。OpenCvSharpをつかう 記事一覧 目標 先にも書きましたが、以下のページで完成形を動かしてみることができます。 http://notiz.flnet.org/CannyWebApp2つのスライダで、Cannyエッジ検出の閾値を自由に変えられます。「Run Canny」を押すと画像が更新されます。 ※ヘンな画像を送り付けられると困るので、アップロード機…

OpenCvSharpをつかう その19(ASP.NET MVCで使う 入門編)

…NET MVC 4でOpenCvSharpを動かしてみたいと思います。ローカルで動かすので、サーバの用意は必要ありません。OpenCvSharpが動くことを最優先していますので、MVCのお作法などなどは、テキトーです。私もあまり慣れていないので、勉強がてら書いています。OpenCvSharpをつかう 記事一覧 つくるもの 画像ファイルを選択してリクエストを投げると、サーバでその画像をCannyエッジ検出して、返してくれるようなサービスを作ります。 今回は、普通に「ビュー」があ…

OpenCvSharpをつかう その18(ラベリング・改)

…リング機能を提供するOpenCvSharp.Blobを、P/Invokeによる実装をやめ、すべてC#(マネージドコード)で実装しなおしました。これは以下の理由からです。 ●特にCvBlobインスタンスの取り回しが悪い。リスト側のCvBlobsが解放されるとCvBlobも解放されてしまうので、永続化しづらい。 ●上記に関連しメモリリークや異常終了が多発。ネイティブリソース解放周りの改善が、cvblobの実装上と難敵"GC"の兼ね合いでかなり苦しい。 変更は、2.4.5 (19 …

OpenCvSharpをつかう その17(NuGetで導入)

…/packages/OpenCvSharp-AnyCPU/OpenCvSharpをつかう 記事一覧 環境の準備 NuGetは、Visual Studio 2012以降なら標準搭載だったかと思います。Visual Studio 2010では、Professional以上のエディションで対応しています。以下のプラグインを導入します。 http://visualstudiogallery.msdn.microsoft.com/27077b70-9dad-4c64-adcf-c7cf…

OpenCvSharpをつかう その16(SVM)

…、SVMです。今回はOpenCvSharpからOpenCVのopencv2/ml.hpp(実装当時はopencv/ml.h)にある機械学習を使います。OpenCvSharpをつかう 記事一覧 準備 ※ NuGetで導入した場合は特に追加の手順はありません。以下は手動で導入する場合の話です。機械学習を提供するのは OpenCvSharp.CPlusPlus.dll です。OpenCvSharp.dllに加え、これを参照に追加してください。また、OpenCVのmlは昔からC++実…

積分画像(Integral Image)による、Sauvolaの手法の高速化

…(); cv::destroyAllWindows(); return 0; } OpenCvSharpでの実装 先日の記事にて説明した通り、Sauvolaの手法による二値化はOpenCvSharp.Extensions.Binarizerクラスから使うことができます。最初に述べた普通の実装をしたものがBinarizer.Sauvolaメソッド、積分画像により実装したのがBinarizer.SauvolaFastメソッドです。普通はSauvolaFastを使えば良いはずです。

OpenCvSharpをつかう その15(適応的閾値処理)

…では終わりません! OpenCvSharpでは、OpenCV標準では用意されていない適応的閾値処理を、こっそり組み込んでいます。今回、初めてそれを公にしておきます。OpenCvSharpをつかう 記事一覧 背景 適応的閾値処理は、様々な応用がありますが、特に文書画像処理においては必須の処理です。例えば以下のような画像(左)を二値化したいとします。このとき、みなさんご存じ 大津の手法 では、(右)のようになってしまいます。 カメラで撮影した場合や古い文書の画像では特に、このよう…

OpenCvSharpをつかう その14(Debian wheezyで動かす)

3年ぶりの「OpenCvSharpをつかう」シリーズ再開です! OpenCvSharpをLinuxで動かすことについては、大昔に断片的に書きましたが、最後まで通しで書いてみます。記憶を頼りに書いているので、本当は詰まった箇所が抜けているかもしれません。 OpenCV / OpenCvSharpのバージョンは2.4.5とします。OpenCvSharpをつかう 記事一覧 OpenCVのインストール aptはちょっと古いのでソースから入れます。ソース取得。 wget http://…

OpenCvSharpをつかう その13(導入時のエラーについて)

…んとも変な話ですが、OpenCvSharpが動かないというケースを時々耳にします。はっきり聞いているわけではないのでよくわからないのですが、わかる限りの解決策を書いておきます。どうやらBadImageFormatExceptionが多いらしい?OpenCvSharpをつかう 記事一覧 BadImageFormatExceptionについて おそらく、OpenCvSharpのDLLと利用側のコードの間の、対象プラットフォームの違いだと思われます。これまでOpenCvSharpは…

OpenCvSharpをつかう その12 (ラベリング)

…の内容は古く、最新のOpenCvSharpでは動作しません。記録としてあえて残しますが、ラベリングについては以下の記事を参照してください。 http://schima.hatenablog.com/entry/2014/01/19/120540 その1 その2 その3 その4 その5 その6 その7 その8 その9 その10 その11 ラップしたときに少しだけ書いていますが(http://d.hatena.ne.jp/Schima/20090404)、改めてまとめておきます。…

OpenCvSharp x64版を公開

…gle.com/p/opencvsharp/downloads/list 去年から研究室では64bitOSを使い始め、家でも先日Windows7にするついでに64bitにしてしまいました。ときどき面倒事もあるもののドライバや既存ソフトウェアの互換性に悩まされることもほとんどなく、またやはり研究目的ではもはや32bitに戻るのは考えられないと感じております。例えば以下は1枚約1MBの画像を2.5K個、すなわち2.5GBぐらいのメモリを食うコードです。 IplImage[] im…

OpenCvSharpをつかう その11(画像のサイズ変更)

その1 その2 その3 その4 その5 その6 その7 その8 その9 その10 cvResizeを用いた拡大処理のサンプルです。詳しい解説はありません。

OpenCvSharpをつかう その10 (Star Detector)

… その9 このところOpenCvSharpの使い方というよりはただのOpenCV 2.0の新機能紹介になっているこのシリーズですが、今回はStar Detector(日本語だとStar検出器?)のサンプルを作ってみたのでご紹介します。Star Detectorの関数はOpenCV 2.0で追加されました。 Star Detectorとは 単純に検索するとこんなページがヒットしたりしますが、おそらくこれではありません。有益そうなページとしては以下のものしか見つかりませんでした。…

OpenCvSharpをつかう その9 (MSER)

…らないのが楽です。 OpenCvSharpでのMSER Cv.ExtractMSERメソッドが対応しています。出力がOpenCVとは少し違っていて、CvContourの配列で返されます。やはりCvSeqよりはマネージ配列の方が扱いやすいと思います。 public static class Cv { public static void ExtractMSER( CvArr img, CvArr mask, out CvContour[] contours, CvMemStor…

OpenCvSharpをつかう その8 (LSH)

…よいと思います。なおOpenCvSharpではcvCreateLSHは実質未サポートです。要は、検索対象とクエリのデータさえあれば、ハッシュ関数はどうするかとか難しいことは考えずにLSHができます。 コード 先人のCvLSHを使ったコードは調べた限りではほとんど皆無で、かろうじて以下のものが見つかりました。 http://moscoso.org/pub/video/opencv/svn/opencvlibrary/trunk/opencv/tests/python/lsh_t…

"VideoInputSharp"をつくってみた

…するようにします。 OpenCvSharpと組み合わせるサンプル。3つのカメラからキャプチャします。 using System; using OpenCvSharp; using VideoInputSharp; class CaptureByVideoInputSharp { static void Main(string[] args) { const int DeviceID1 = 0; const int DeviceID2 = 1; const int Device…

OpenCV2.0対応版OpenCvSharpを公開

…gle.com/p/opencvsharp/downloads/listOpenCV2.0をインストールするとbinディレクトリには「libcv200.dll」といったDLLが置かれていますが、OpenCvSharpはこれらは読み込みに行きません。読み込もうとするのはlib無しの「cv200.dll」「cxcore200.dll」といった名前のDLLです。これらはCMakeにより自分でOpenCVをビルドすると生成されますので、あらかじめそれをしておくことが前提です。CMak…

OpenCV2.0でcvの関数がおかしい?

…原因がわかりません。OpenCvSharp内部でも、未だに原因が分からずtry-catchで無かったことにしているAccessViolationExceptionが結構あります。 試してみたところ、cvCvtColorの他にもcvFindContours, cvWarpAffine, cvFiletr2Dといった関数でも例外が起きることを確認しました。cvの関数に多い模様です。 しかし厄介なのは、何事もなく実行できる関数も多いということです。ですからDllImport自体がう…

OpenCV2.0.0リリース

延びに延びていましたがようやく出ました。http://sourceforge.net/projects/opencvlibrary/やはりバージョン番号は1.2ではなく2のようです。 ぼちぼちOpenCvSharpも2.0.0対応に向けてがんばりますか・・・・

PLAYSTATION Eye を.NET Frameworkから使う

…ッパー このSDKをOpenCvSharp、というよりもそれに限らずC#(.NET Framework)から使ってみたいと思ったので、ラッパーを書きました。Windows限定で問題ないので、C++/CLIで実装しました。SDKのヘッダはごくコンパクトかつわかりやすく出来ているので、特に苦労も無く作業は終わりました。 以下、ラッパーによるコードの例を示していきます。対応している解像度・FPS等の情報の一覧を取り出す方法です。 foreach (PS3EyeFormat f in…

Twitterアカウント作成

OpenCvSharpの更新履歴というのは全然記録しておらず、コミットログだけが頼りだというひどい状況です。遅ればせながら、以下のアカウントに日々の更新を書き連ねていくことにしました。http://twitter.com/OpenCvSharpTwitterもログはあまり遡れないサービスなのが難点ですが、時々バックアップはとるようにしたいと思います。 Twitter出版社/メーカー: Twitter Inc.発売日: 2011/03/19メディア: アプリこの商品を含むブログ…

OpenCvSharpをつかう その7 (WindowsFormsで動画の再生)

…ことは多いようです。OpenCvSharpに限っても、以下のページなどで試みられています。http://d.hatena.ne.jp/Guernsey/20081207/1228649067 http://blog.livedoor.jp/embed_life/archives/267250.htmlC#はGUIアプリケーションの開発の容易さや強力さが大きなウリだと思うので、当然のことです。しかしサンプルには入れてなかった気がするので、ここで様々な方法を試してみます。 前提 …