private void btnAccept_MouseDown(object sender, MouseEventArgs e) { // Easter egg to save a .pixdet file if (m_AllowPixDetExport && e.Button == MouseButtons.Middle && Control.ModifierKeys == Keys.Control) { saveFileDialog.FileName = Path.ChangeExtension(Path.GetFileName(m_VideoController.CurrentVideoFileName), ".pixdet"); if (saveFileDialog.ShowDialog(this) == DialogResult.OK) { using (var pixdet = new PixDetFile(saveFileDialog.FileName, FileAccess.Write)) { pixdet.WriteHeader(m_VideoController.CurrentVideoFileName, m_IntegrationDetectionController.StartFrameId); foreach (var entry in m_PixelsToSave) { pixdet.AddFramePixels(entry.Item1, entry.Item2.ToArray()); } pixdet.WriteFooter(m_FoundIntegration.Interval, m_FoundIntegration.StartingAtFrame, m_FoundIntegration.Certainty, m_FoundIntegration.AboveSigmaRatio); } } } }
public void Run() { if (!m_Arguments.TryGetValue("f", out m_VideoFileName)) { Console.Error.WriteLine("-f must be specified"); return; } if (!File.Exists(m_VideoFileName)) { Console.Error.WriteLine(string.Format("File '{0}' cannot be found.", m_VideoFileName)); return; } if (".pixdet".Equals(Path.GetExtension(m_VideoFileName), StringComparison.InvariantCultureIgnoreCase)) { var pixdet = new PixDetFile(m_VideoFileName, FileAccess.Read); m_ExpectedFit = pixdet.GetStoredIntegrationFit(); m_PixelImageProvider = pixdet; } else { m_ExpectedFit = null; var videoPlayer = new AutomationVideoPlayer(); if (!videoPlayer.OpenVideo(m_VideoFileName)) { Console.Error.WriteLine(string.Format("Cannot open file '{0}'.", m_VideoFileName)); return; } m_PixelImageProvider = videoPlayer; } string sfStr; m_StartFrameNo = 0; if (!m_Arguments.TryGetValue("sf", out sfStr) || !int.TryParse(sfStr, out m_StartFrameNo)) { m_StartFrameNo = m_PixelImageProvider.FirstFrame; } string pixFile; m_RecordPixelFile = false; if (m_Arguments.TryGetValue("pix", out pixFile)) { if (!Path.IsPathRooted(pixFile)) { pixFile = Path.GetFullPath(@".\" + pixFile); } var dirName = Path.GetDirectoryName(pixFile); if (!Directory.Exists(dirName)) { Console.Error.WriteLine(string.Format("Recording directory '{0}' does not exist", dirName)); return; } m_RecordFileName = pixFile; m_RecordPixelFile = true; m_PixDetFile = new PixDetFile(m_RecordFileName, FileAccess.Write); m_PixDetFile.WriteHeader(m_VideoFileName, m_StartFrameNo); } m_Controller = new IntegrationDetectionController(m_PixelImageProvider, m_StartFrameNo); m_Controller.OnPotentialIntegration += OnPotentialIntegration; m_Controller.OnFramePixels += m_Controller_OnFramePixels; m_Controller.RunMeasurements(); m_RunFinished.WaitOne(); }