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); }
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(); }
private void OnExit() { foreach (var whiskerFrame in m_Frames) { whiskerFrame.Value.Dispose(); } if (WhiskerVideo != null) { WhiskerVideo.Dispose(); } }
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(); }