Example #1
0
        private void OpenFile(string fileName)
        {
            XmlSerializer     serializer = new XmlSerializer(typeof(WhiskerTrackerXml));
            WhiskerTrackerXml whiskerTracker;

            using (StreamReader reader = new StreamReader(fileName))
            {
                whiskerTracker = (WhiskerTrackerXml)serializer.Deserialize(reader);
            }

            if (!File.Exists(whiskerTracker.ClipSettings.ClipFilePath))
            {
                MessageBoxResult result = MessageBox.Show("File not found, would you like to browse for it?", "File not found", MessageBoxButton.YesNo, MessageBoxImage.Question);

                if (result == MessageBoxResult.Yes)
                {
                    whiskerTracker.ClipSettings.ClipFilePath = FileBrowser.BroseForVideoFiles();

                    if (string.IsNullOrWhiteSpace(whiskerTracker.ClipSettings.ClipFilePath))
                    {
                        return;
                    }
                }
                else
                {
                    return;
                }
            }

            WorkingFile  = fileName;
            WhiskerVideo = ModelResolver.Resolve <IWhiskerVideo>();
            WhiskerVideo.SetVideo(whiskerTracker.ClipSettings.ClipFilePath);
            m_VideoWidth  = (int)WhiskerVideo.Width;
            m_VideoHeight = (int)WhiskerVideo.Height;
            FrameCount    = WhiskerVideo.FrameCount;

            GlobalSettings.GlobalSettings.ClipSettings = whiskerTracker.ClipSettings.GetClipSettings();
            GlobalSettings.GlobalSettings.ClipSettings.Commit();
            GlobalSettings.GlobalSettings.UnitSettings = whiskerTracker.UnitSettings.GetSettings();
            GlobalSettings.GlobalSettings.UnitSettings.Commit();
            GlobalSettings.GlobalSettings.FrameRateSettings = whiskerTracker.FrameRateSettings.GetSettings();
            GlobalSettings.GlobalSettings.FrameRateSettings.Commit();

            Image         = null;
            Started       = false;
            VideoSelected = true;
            ClearUndoActions();

            Dictionary <int, MouseFrameViewModel> frames = new Dictionary <int, MouseFrameViewModel>();

            foreach (MouseFrameXml mouseFrame in whiskerTracker.Frames)
            {
                frames.Add(mouseFrame.IndexNumber, new MouseFrameViewModel(mouseFrame.GetMouseFrame()));
            }

            StartPicking(frames);
        }
Example #2
0
        private void StartPicking(Dictionary <int, MouseFrameViewModel> data = null)
        {
            Started = true;

            m_Frames = new Dictionary <int, MouseFrameViewModel>();
            int indexNumber  = 0;
            int frameCounter = 1;

            while (frameCounter <= EndFrame)
            {
                using (Image <Bgr, Byte> currentFrame = WhiskerVideo.GetFrameImage())
                {
                    if (currentFrame == null)
                    {
                        break;
                    }

                    int startRange = frameCounter - StartFrame;
                    if (startRange >= 0)
                    {
                        //We're within range
                        if (startRange % FrameInterval == 0)
                        {
                            //We're on the interval
                            MouseFrameViewModel mouseFrameViewModel;
                            IMouseFrame         mouseFrame;
                            if (data == null)
                            {
                                mouseFrame             = ModelResolver.Resolve <IMouseFrame>();
                                mouseFrame.FrameNumber = frameCounter;
                                mouseFrame.IndexNumber = indexNumber;
                                mouseFrame.Whiskers    = GlobalSettings.GlobalSettings.ClipSettings.CreateEmptyWhiskers(mouseFrame);
                                mouseFrameViewModel    = new MouseFrameViewModel(mouseFrame);
                            }
                            else
                            {
                                mouseFrameViewModel = data[indexNumber];
                                mouseFrame          = mouseFrameViewModel.Model;
                            }

                            mouseFrame.Frame = currentFrame.Clone();

                            m_Frames.Add(indexNumber, mouseFrameViewModel);
                            indexNumber++;
                        }
                    }
                }

                frameCounter++;
            }

            m_FrameCounter = -1;
            UpdateWhiskerPositions(LastKnownImageWidth, LastKnownImageHeight);
            GetNextFrame();
        }
Example #3
0
        private void OnExit()
        {
            foreach (var whiskerFrame in m_Frames)
            {
                whiskerFrame.Value.Dispose();
            }

            if (WhiskerVideo != null)
            {
                WhiskerVideo.Dispose();
            }
        }
Example #4
0
        private void NewSession()
        {
            string fileName = FileBrowser.BroseForVideoFiles();

            if (string.IsNullOrWhiteSpace(fileName))
            {
                return;
            }

            WhiskerVideo = ModelResolver.Resolve <IWhiskerVideo>();
            WhiskerVideo.SetVideo(fileName);
            m_VideoWidth  = (int)WhiskerVideo.Width;
            m_VideoHeight = (int)WhiskerVideo.Height;
            FrameCount    = WhiskerVideo.FrameCount;

            ClipSettingsView            clipSettingsView = new ClipSettingsView();
            ClipSettingsWindowViewModel viewModel        = new ClipSettingsWindowViewModel(WhiskerVideo);

            clipSettingsView.DataContext = viewModel;

            clipSettingsView.ShowDialog();

            if (viewModel.ExitResult != WindowExitResult.Ok)
            {
                return;
            }

            IClipSettings clipSettings = viewModel.Model;

            GlobalSettings.GlobalSettings.ClipSettings = clipSettings;
            GlobalSettings.GlobalSettings.ClipSettings.Commit();

            GlobalSettings.GlobalSettings.FrameRateSettings.CurrentFrameRate  = WhiskerVideo.FrameRate;
            GlobalSettings.GlobalSettings.FrameRateSettings.OriginalFrameRate = viewModel.OriginalFrameRate;

            Image         = null;
            Started       = false;
            VideoSelected = true;

            StartPicking();

            WorkingFile = string.Empty;
            ClearUndoActions();
        }