private void SaveResults() { string message; if (!ValidateResults(out message)) { MessageBox.Show("Unable to save: " + message, "Error", MessageBoxButton.OK, MessageBoxImage.Error); return; } string fileLocation = FileBrowser.SaveFile("Excel|*.xlsx"); if (string.IsNullOrWhiteSpace(fileLocation)) { return; } int rows = m_Frames.Count + 1; int columns = GlobalSettings.GlobalSettings.ClipSettings.TotalNumberOfPoints * 2; object[,] excelValues = new object[rows, columns]; IWhisker[] whiskers = m_Frames.First().Value.Model.Whiskers; int counter = 0; foreach (IWhisker whisker in whiskers) { foreach (IWhiskerPoint whiskerPoint in whisker.WhiskerPoints) { excelValues[0, counter] = whisker.WhiskerName + " - Point " + whiskerPoint.PointId + " X"; excelValues[0, counter + 1] = whisker.WhiskerName + " - Point " + whiskerPoint.PointId + " Y"; counter += 2; } } int xCounter = 1; foreach (var whiskerFrame in m_Frames) { MouseFrameViewModel frame = whiskerFrame.Value; WhiskerViewModel[] whiskersViewModel = frame.Whiskers; counter = 0; foreach (WhiskerViewModel whisker in whiskersViewModel) { foreach (WhiskerPointViewModel whiskerPoint in whisker.WhiskerPoints) { excelValues[xCounter, counter] = whiskerPoint.XRatio * m_VideoWidth * GlobalSettings.GlobalSettings.UnitSettings.UnitsPerPixel; excelValues[xCounter, counter + 1] = whiskerPoint.YRatio * m_VideoHeight * GlobalSettings.GlobalSettings.UnitSettings.UnitsPerPixel; counter += 2; } } xCounter++; } ExcelService.WriteData(excelValues, fileLocation); }
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 bool ValidateResults() { foreach (KeyValuePair <int, MouseFrameViewModel> frame in m_Frames) { MouseFrameViewModel mouseFrame = frame.Value; if (!mouseFrame.Validate()) { return(false); } } return(true); }
private void RepeatLastPoint() { //Make sure there's a previous frame to repeat action from if (CurrentFrame == null || m_Frames == null) { return; } if (m_Frames.Count <= 1) { return; } if (FrameCounter == 0) { return; } MouseFrameViewModel lastFrame = m_Frames[FrameCounter - 1]; WhiskerViewModel previousWhisker = lastFrame.Whiskers.FirstOrDefault(x => x.WhiskerId == SelectedWhisker.WhiskerId); if (previousWhisker == null) { return; } WhiskerPointViewModel previousPoint = previousWhisker.WhiskerPoints.FirstOrDefault(x => x.PointId == SelectedWhiskerPoint.PointId); if (previousPoint == null) { return; } AddUndoAction(SelectedWhiskerPoint.Clone()); SelectedWhiskerPoint.XRatio = previousPoint.XRatio; SelectedWhiskerPoint.YRatio = previousPoint.YRatio; SelectedWhiskerPoint.CanvasWidth = previousPoint.CanvasWidth; SelectedWhiskerPoint.CanvasHeight = previousPoint.CanvasHeight; NotifyPropertyChanged("Whiskers"); if (AutoNextPoint) { IncreaseWhiskerCounter(); } }
private bool ValidateResults(out string message) { message = string.Empty; foreach (KeyValuePair <int, MouseFrameViewModel> frame in m_Frames) { MouseFrameViewModel mouseFrame = frame.Value; string mouseFrameMessage = string.Empty; if (!mouseFrame.Validate(ref mouseFrameMessage)) { message = mouseFrameMessage + " from index: " + mouseFrame.IndexNumber; return(false); } } return(true); }
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(); }