private void Track() { _faceTracker.Update(_frame, out _faceRect); _faceMat = new Mat(_frame, _faceRect); _eyeLTracker.Update(_faceMat, out _eyeLRect); _eyeRTracker.Update(_faceMat, out _eyeRRect); }
void ProcessFrame() { //tracker = new TrackerKCF(); //tracker.Init(first_frame, to_be_trucked); temp_rec_trucked = to_be_trucked; if (!_cameraCapture.IsOpened) { MessageBox.Show("error with openning the file"); return; } Mat frame = _cameraCapture.QueryFrame(); var watch = System.Diagnostics.Stopwatch.StartNew(); int camera_speed = (int)(800.0 / FrameRate); while (frame != null) { try { watch = System.Diagnostics.Stopwatch.StartNew(); bool ok = tracker.Update(frame.Clone(), out temp_rec_trucked); if (ok) { //frame.CopyTo(last_seen_frame); last_seen_frame_rec = temp_rec_trucked; CvInvoke.Rectangle(frame, temp_rec_trucked, new MCvScalar(255.0, 0, 0), 1); camera_imageBox.Image = frame.Bitmap; } else { CvInvoke.PutText(frame, "Tracking failure detected", new Point(100, 50), FontFace.HersheyPlain, 1.0, new MCvScalar(255.0, 255.0, 255.0)); camera_imageBox.Image = frame.Bitmap; //if (!nextCameraStarted) // checkTheNextCamera(); } frame = _cameraCapture.QueryFrame(); frameNum++; watch.Stop(); var elapsedMs = watch.ElapsedMilliseconds; if (camera_speed - elapsedMs > 0) { //Thread.Sleep(camera_speed - (int)elapsedMs); Thread.Sleep(800 / (int)FrameRate); } } catch (Exception e) { Console.WriteLine(e.Message); } } }