Example #1
0
        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);
                    }
                }
            }
        }
Example #2
0
        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();
        }