Exemplo n.º 1
0
        void ProcessFrameFromSource(System.Drawing.Bitmap [] frames)
        {
            lock (mutex)
            {
                if (CMSLogger.CanCreateLogEvent(false, false, true, "CMSLogProcessesEvent"))
                {
                    CMSLogProcessesEvent pEvent = new CMSLogProcessesEvent();
                    pEvent.CaptureProcesses();
                    CMSLogger.SendLogEvent(pEvent);
                }

                if (!controllerState.Equals(CMSState.CameraNotFound))
                {
                    foreach (Bitmap frame in frames)
                    {
                        frame.RotateFlip(RotateFlipType.RotateNoneFlipX);
                    }

                    CMSTrackingSuite currentTracker = model.SelectedSuite;

                    if (currentTracker != null && frames != null && frames.Length > 0)
                    {
                        if (!currentTracker.Initialized)
                        {
                            Size[] sizes = new Size[frames.Length];
                            for (int i = 0; i < frames.Length; i++)
                            {
                                sizes[i] = new Size(frames[i].Width, frames[i].Height);
                            }
                            currentTracker.Init(sizes);
                        }


                        bool control = controllerState.Equals(CMSState.ControlTracking);

                        /*
                         * CMSLogExperimentFrameEvent logExpFrameEvent = null;
                         *
                         * if (ExperimentFrameSaver.IsExperimentFrameEnabled())
                         * {
                         *  if (ExperimentFrameSaver.CanSaveLogEvent())
                         *  {
                         *      logExpFrameEvent = new CMSLogExperimentFrameEvent(frames[0], currentTracker.Name, 0, 0);
                         *  }
                         * }*/

                        currentTracker.ProcessFrame(frames, control);

                        /*
                         * if (logExpFrameEvent != null)
                         * {
                         *  if (currentTracker.TrackingModule != null)
                         *  {
                         *      PointF curPoint = currentTracker.TrackingModule.ImagePoint;
                         *      logExpFrameEvent.X = (int)curPoint.X;
                         *      logExpFrameEvent.Y = (int)curPoint.Y;
                         *      ExperimentFrameSaver.SaveLogEvent(logExpFrameEvent);
                         *  }
                         * }*/

                        if (CMSLogger.CanCreateLogEvent(true, true, false, "CMSLogFrameEvent"))
                        {
                            CMSLogFrameEvent frameEvent = new CMSLogFrameEvent();
                            if (frameEvent != null)
                            {
                                frameEvent.SetImages(frames);
                                CMSLogger.SendLogEvent(frameEvent);
                            }
                        }
                    }

                    videoDisplay.SetVideo(frames);
                }
            }
        }