Example #1
0
 /// <summary>
 /// Called every time the webcam sends us a new frame.
 /// Most of the UI elements are updated here.
 /// </summary>
 /// <param name="sender"></param>
 /// <param name="eventArgs"></param>
 private void video_NewFrame(object sender,
                             NewFrameEventArgs eventArgs)
 {
     // get new frame
     if (picBoxMain.Image != null)
     {
         picBoxMain.Image.Dispose();
     }
     _frameLock.WaitOne();
     _currentFrame    = (Bitmap)eventArgs.Frame.Clone();
     picBoxMain.Image = _currentFrame;
     _frameLock.Release();
     _newFrame.Set();
     // process the frame
     using (Graphics gf = picBoxMain.CreateGraphics())
     {
         if (_ParticleFilterRunning && pf != null)
         {
             _frameLock.WaitOne();
             pf.markupImage(gf, currentCenter);
             float Confidence = pf.getConfidence();
             int[] center     = pf.findCenter();
             setTbox(Confidence.ToString(), tBoxConfidence);
             setTbox(center[0].ToString() + "," + center[1].ToString(), tboxCenterCoordinates);
             if (pf._Centered)
             {
                 _Centered.Set();
                 SetStatus("Target Locked", lblStatus);
             }
             else
             {
                 SetStatus("Looking for target", lblStatus);
                 _Centered.Reset();
             }
             if (!_RocketTracking.IsAlive)
             {
                 _RocketTracking.Start();
             }
             _frameLock.Release();
         }
     }
 }