CでのOpenCVとそのアプリケーションの使用開始#

OpenCVテクノロジーとC#プログラミング言語でのそのアプリケーションについて少しお話したいと思います。



OpenCV(英語のオープンソースコンピュータービジョンライブラリ、オープンソースコンピュータービジョンライブラリ)は、コンピュータービジョンアルゴリズム、画像処理、汎用のオープンソース数値アルゴリズムのライブラリです。 また、Python、Java、Ruby、Matlab、Luaなどの言語向けに開発されたC / C ++で実装されています。 学術および商業目的で自由に使用できます-BSDライセンスの条件の下で配布されます。



私は最近このライブラリに出会いました。 サイトtoster.ruで、私はこれらの珍しいトピックについて質問し、回答の1つで、このライブラリを使用した結果へのリンクを受け取りました。 それらのいくつかを次に示します。



www.youtube.com/watch?v=h9kPI7_vhAU

www.youtube.com/watch?v=256bg5_vNvg

www.youtube.com/watch?v=PUhwGTSNGhI



開始するには、 www.emgu.com / wiki / index.php / Main_Pageから必要なファイルをダウンロードする必要があります。



Emgu CVは、OpenCV画像処理ライブラリ用のクロスプラットフォーム.Netアドオンです。 C#、VB、VC ++、IronPythonなどの.NET互換言語で動作するように設計されており、Visual Studio、Xamarinで使用でき、Windows、Linux、Mac OS X、IOS、AndroidおよびWindows Phone



現在のバージョンをダウンロードしてインストールしたら、作業を開始できます。 この例では、人の顔と目を見つけて認識します。



これを行うには、必要なすべての情報を含む既製のxmlファイルが必要です。 言われたように、OpenCVはオープンソースプロジェクトです。したがって、必要に応じて、多くの既製のソリューションを見つけることができます。



動作させるために、適切なライブラリを接続します。



using Emgu.CV; using Emgu.CV.CvEnum; using Emgu.CV.Structure; using Emgu.CV.Cvb;
      
      





最初に、Captureクラスのインスタンスを作成する必要があります。



 Capture capture = new Capture();
      
      





このオブジェクトは、ビデオストリームの傍受を担当します。



顔や目を認識するオブジェクトを作成するには、すばらしいHaarCascadeクラスを使用します。 分類器(つまり、Haarのような関数で動作する強制分類器のカスケード)は、特定のオブジェクト(たとえば、顔や車)の種類の数百のサンプルでトレーニングされ、同じサイズ(たとえば20x20)にスケーリングする肯定的な例を挙げ、否定的な例を挙げます-同じサイズの任意の画像。



つまり、コンストラクターでHaarCascadeクラスのインスタンスを作成するときに、必要なデータを含むxmlファイルへのリンクを指定します。



 //for face HaarCascade faceCascade = new HaarCascade("haarcascade_frontalface_alt.xml"); //for eye HaarCascade eyeCascade = new HaarCascade("haarcascade_eye.xml");
      
      





インターセプトされたフレームをさらに処理するには、QueryFrame()メソッドを使用する必要があります。



 Image<Bgr, Byte> image = capture.QueryFrame();
      
      





フレームを取得し、デバイス(Webカメラ)から送信されます。 次に、見つけた画像をグレーに変換します。



 Image<Gray, Byte> grayImage = image.Convert<Gray, Byte>();
      
      





次に、顔と目に属する属性を見つける必要があります。



 var Face = grayImage.DetectHaarCascade(faceCascade)[0]; foreach (var face in Face) { //  ,     ,      . image.Draw(face.rect, new Bgr(255, 255, 255), 10); } //    var Eye = grayImage.DetectHaarCascade(eyeCascade)[0]; foreach (var eye in Eye) { image.Draw(eye.rect, new Bgr(0, 0, 255), 3); }
      
      





まあ、それはほとんどすべてです。どこかで取得した画像を表示するだけです。 これを行うには、imageBoxコントロールを使用します(手動で追加する必要があります)。



 imageBoxEyeAndFaceDetector.Image = image;
      
      





これで、ボタンを押すなどして、適切な場所に作業を設定できます。



 Application.Idle += Method;
      
      





XMLファイルをダウンロードするためのリンク: ifolder.com.ua/z3fihkcet19n.html



また、マシンビジョンwww.youtube.com/watch?v=TyEfJyJA7gQの操作の一般的な理解については、このビデオをご覧になることをお勧めします。



頑張ってください。



参照資料



www.emgu.com/wiki/index.php/Main_Page

en.wikipedia.org/wiki/OpenCV

devnuances.com



All Articles