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

Source: https://habr.com/ru/post/J260741/


All Articles