2016-06-28 2 views
0

Je suis nouveau avec emgucv et flux optique. J'essaie de reconnaître un objet en mouvement sur la vidéo et dessine autour d'eux un cercle ou un rectangle ou une autre forme. Je dois utiliser opticalflow.HS et opticalflow.LK. C'est la première chose que je veux faire. J'utilise emgu cv 2.4.9.J'ai du code, mais c'est juste un peu de réflexion. Je rouge cadre précédent et le cadre actuel et l'a envoyé à opticalflow.HS mais je ne sais pas quoi faire après cela et je ne peux trouver aucun exemple en utilisant HS, donc j'apprécierais vraiment le même exemple que faire après le flux optique. HS et aussi quelques conseils.Détection de mouvement en utilisant C# et EmguCV

private void ProcessFrame(object sender, EventArgs e) 
    { 
     bool firstFrame = true; 
     bool keepProcessing = true; 

     Image<Gray, Byte> nextFrame = new Image<Gray, byte>(160, 640); 
     Image<Gray, Byte> previousFrame = null; 

     while (keepProcessing) 
     { 
      // ****** Change - Save previous frame before getting next one 
      // Only do this if the first frame has passed 
      if (!firstFrame) 
       previousFrame = nextFrame.Clone(); 

      // grab the next frame from video source 
     // _capture.Grab(); 

      // decode and return the grabbed video frame 
      nextFrame = _capture.RetrieveGrayFrame(); 

      // if the frame is valid (not end of video for example) 
      if (!(nextFrame==null)) 
      { 
       // **** Change - If we are on the first frame, only show that and 
       // set the flag to false 
       if (firstFrame) 
       { 
        firstFrame = false; 

       } 
       else 
       { 
        Image<Gray, float> velx = new Image<Gray, float>(previousFrame.Size); 
        Image<Gray, float> vely = new Image<Gray, float>(nextFrame.Size); 
        OpticalFlow.HS(previousFrame, nextFrame, true, velx, vely, 0.1d, new MCvTermCriteria(100)); 
        //capturedImageBox.Image = nextFrame; 

       } 
      } 
      else 
      { 
       keepProcessing = false; 
      } 
     } 

Répondre

0

OpticalFlow.HS Method est calcule flux pour chaque pixel de la première image d'entrée en utilisant l'algorithme de Horn & Schunck. Après cela, je suggère que vous deviez dessin de flux optique dense. J'espère vous aider.

Go to link.