Difference between revisions of "CSharp OpenCV"

From Ilianko
Line 37: Line 37:
  
 
==Проверка==
 
==Проверка==
Включваме уеб камера, добавяме код, който отваря камерата за четене и проберяваме дали ще се компилира и стартира програмата
+
[[CS уеб камера|Включваме уеб камера, добавяме код, който отваря камерата за четене и проберяваме дали ще се компилира и стартира програмата]]
 
  private Capture cap = new Capture();
 
  private Capture cap = new Capture();
  

Revision as of 09:45, 12 February 2014

Конфигуриране на OpenCV със C#.

  • Инсталиране на EMGU wrapper
  • Инсталиране (Repair) на Microsoft Visual C++ 2010 Redistributable Package (x86)

Създаване на проект в C# и добавяне на необходимите библиотеки

  • Start->All Programs->MS VS2010 Express -> MS VS2010 Express
  • File->New Project->Windows Forms Application->OK

EMGU настройки#Референции

  • File->Save
  • References->Add Reference->Browse->C:/EMGU->emgu...->bin->Emgu.CV.dll,Emgu.CV.UI.dll, Emgu.Utils.dll
  • References->Add Reference->.Net->WindowsBase->OK

EMGU настройки#Зависимости

  • C:/EMGU->emgu...->bin->x86->Object of type - exe, dll, ocx) -> преместват се се всички в директорията debug на приложението
  • Desktop->nvcuda.dll премества се в директорията debug на приложението.

Добавяне на namespaces

Освен автоматично генерираните

using System;
using System.Collections.Generic;
using System.ComponentModel;
using System.Data;
using System.Drawing;
using System.Linq;
using System.Text;
using System.Windows.Forms;

Трябва да се добавят използваните от openCV

using Emgu.CV;
using Emgu.Util;
using Emgu.CV.Structure;
using System.Windows.Threading;

Проверка

Включваме уеб камера, добавяме код, който отваря камерата за четене и проберяваме дали ще се компилира и стартира програмата

private Capture cap = new Capture();


namespace WindowsFormsApplication1 {

   public partial class Form1 : Form
   {
       public Form1()
       {
           InitializeComponent();
       }
       public Rectangle[] ccc;
       private CascadeClassifier xxx = new CascadeClassifier(@"haarcascade_frontalface_default.xml");
       private Size min = new Size(20,20);
       private Size max = new Size(300,300);
       
    
       private DispatcherTimer timer = new DispatcherTimer();
       private void Form1_Load(object sender, EventArgs e)
       {
           Image<Bgr, Byte> currentFrame = cap.QueryFrame();
           this.Size = currentFrame.Size;
           timer.Tick += new EventHandler(timer_Tick);
           timer.Interval = new TimeSpan(0, 0, 0, 0, 35);
           timer.Start();
       }
       int i = 0;
       void timer_Tick(object sender, EventArgs e)
       {
           Image<Bgr, Byte> currentFrame = cap.QueryFrame();
           Image<Gray, Byte> grayFrame = currentFrame.Convert<Gray, Byte>();


           if (i > 35 || i == 0)
           {
               ccc = xxx.DetectMultiScale(grayFrame, 1.2, 2, min, max);
               i = 0;
           }
           i++;
           foreach (var face in ccc)
               currentFrame.Draw(face, new Bgr(0, double.MaxValue, 0), 3);
           pictureBox1.Image = currentFrame.Bitmap;


       }
   }

}

4.