2017-07-19 3 views
0

J'utilise le Emgu CV 2.4.0.1717 et chaque fois que je déclare la classe Mat il n'existe pas. J'essaie de créer une application en utilisant C# qui peut capturer une image. Ceci est pour mon projet de reconnaissance faciale. J'essayais de déclarer un objet Mat mais il n'existe pas. J'ai essayé d'utiliser d'autres versions d'Emgu CV et cela a fonctionné. Cependant, le HaarCascade n'existe pas. Il a déclaré que je devrais utiliser CascadeClassifier à la place, mais il y a toujours une erreur. Voici mon code:Emgu CV Capture d'image en utilisant C#

public partial class Camera : Form 
{ 

    private VideoCapture cap; 
    private HaarCascade haar; 

    private void Camera_Load(object sender, EventArgs e) 
    { 
     // passing 0 gets zeroth webcam 
     cap = new VideoCapture(0); 
     // adjust path to find your xml 
     haar = new HaarCascade(
     "haarcascade_frontalface_default.xml"); 
    } 

    private void timer1_Tick(object sender, EventArgs e) 
    { 
     using (Image<Bgr, byte> nextFrame = cap.QueryFrame()) 
     { 
      if (nextFrame != null) 
      { 

       Image<Gray, byte> grayframe = nextFrame.Convert<Gray, byte>(); 
       var faces = 
        grayframe.DetectHaarCascade(
         haar, 1.4, 4, 
         HAAR_DETECTION_TYPE.DO_CANNY_PRUNING, 
         new Size(nextFrame.Width/8, nextFrame.Height/8) 
         )[0]; 

       foreach (var face in faces) 
       { 
        nextFrame.Draw(face.rect, new Bgr(0, double.MaxValue, 0), 3); 
       } 
       imgCamUser.Image = nextFrame.ToBitmap(); 
      } 
     } 
    } 
} 

Répondre

0

La classe Mat à laquelle vous essayez d'accéder provient d'emgucv 3+. et la classe HaarCascade est en version inférieure d'emgu.

Vous devez mettre à niveau votre emgu vers emgu 3 à partir de here et utiliser CascadeClassifier au lieu de HaarCascade.