2017-07-21 6 views
-2

Je me connecte une Webcam avec EmguCV 2.2.1.1150 fonctionne correctement, mais quand je connecte une caméra IP en utilisant le protocole RTSP ne fonctionne que pendant quelques minutes et émet une exception, mais avec Webcam pas jette exception.Problème avec EmguCV Capture IP cam Détection de visage

J'ai ce code:

private void btnDetectar_Click(object sender, EventArgs e) 
{ 
    //grabber = new Capture(@"rtsp://user:[email protected]:554/cam/realmonitor?channel=1&subtype=01?tcp"); // IP CAMERA 
    grabber = new Capture(); // WEBCAM 

    // Inicia la función FrameGrabber 
    Application.Idle += new EventHandler(FrameGrabber); 
    btnDetectar.Enabled = false; 
} 


void FrameGrabber(object sender, EventArgs e) 
{ 
    try 
    { 
     // Obtiene el "frame" actual del dispositivo de captura 
     currentFrame = grabber.QueryFrame().Resize(704, 480, Emgu.CV.CvEnum.INTER.CV_INTER_CUBIC); 

     // Se convierte a escala de grises 
     Image<Gray, byte> gray = currentFrame.Convert<Gray, byte>(); 

     // Detector facial 
     MCvAvgComp[][] facesDetected = gray.DetectHaarCascade(
       face, 
       1.2, 
       10, 
       Emgu.CV.CvEnum.HAAR_DETECTION_TYPE.DO_CANNY_PRUNING, 
       new Size(gray.Width/6, gray.Height/6)); 

     // Acción para cada elemento detectado 
     foreach (MCvAvgComp faces in facesDetected[0]) 
     { 
      result = currentFrame.Copy(faces.rect).Convert<Gray, byte>().Resize(200, 200, Emgu.CV.CvEnum.INTER.CV_INTER_CUBIC); 
      // dibuja rectangulo en rostro detectado      
      currentFrame.Draw(faces.rect, new Bgr(Color.Red), 3); 
     } 

     picUser.Image = currentFrame.ToBitmap(); 

    } 
    catch (Exception a) 
    { 
     String timeStamp = DateTime.Now.ToString(); 
     MessageBox.Show(" Hora: " + timeStamp + "\n Error: " + a.Message + "\n Stacktrace: " + a.StackTrace + "\n", "Error", MessageBoxButtons.OK, MessageBoxIcon.Error); 
    } 
} 

Pourquoi est-ce qui se passe?

+2

Pensez-vous que peut-être le texte de l'exception contient un indice? – Blorgbeard

+0

Hora: 21/07/2017 05:06:56 p. m. Erreur: La référence d'objet n'est pas définie sur une instance d'un objet. Stacktrace: fr MultiFaceRec.FrmPrincipal.FrameGrabber (expéditeur d'objet, EventArgs e) fr c: \ FaceRecProOV \ MainForm.cs: ligne 115 (cette ligne "currentFrame = grabber.QueryFrame(). Resize (704, 480, Emgu.CV. CvEnum.INTER.CV_INTER_CUBIC); ") – Leinad

+0

Eh bien, commencez par lire/comprendre [ceci] (https://stackoverflow.com/questions/4660142/what-is-a-nullreferenceexception-and-how-do-i-fix -it) question. Vous pourrez alors le résoudre ou poser une question plus précise. – Blorgbeard

Répondre

0

Eh bien, j'ai dû mettre à jour Emgu CV 2.2.1.1150 à 3.0.0.2157, fonctionne simplement en utilisant cette version Emgu CV.