コード例 #1
0
        private void submit_OnClick(object sender, RoutedEventArgs e)
        {
            bool?fb           = fileButton.IsChecked;
            bool?cb           = cameraButton.IsChecked;
            bool fileChosen   = false;
            bool cameraChosen = false;

            if (fb.HasValue)
            {
                fileChosen = (bool)fb;
            }
            if (cb.HasValue)
            {
                cameraChosen = (bool)cb;
            }
            if (fileChosen)
            {
                machineInputSourceKind = MachineInputSourceKind.SourceFile;
            }
            else if (cameraChosen)
            {
                machineInputSourceKind = MachineInputSourceKind.SourceWebcam;
                String text2 = cameraFrameRate.Text;
                String text  = cameraNumberManual.Text;

                // The default value is zero, but could crash if there is no detectable camera.
                if (cameraList.IsEnabled)
                {
                    cameraNumber = cameraList.SelectedIndex;
                }
                if (advancedSettingsVisible && text.Length > 0)
                {
                    cameraNumber = Int32.Parse(text);
                }
                if (text2 == "")
                {
                    ;
                }
                else
                {
                    cameraFps = Int32.Parse(text2);
                }
            }
            bool?rd = resourceDisposal.IsChecked;

            if (rd.HasValue)
            {
                resDisposal = (bool)rd;
            }
            distance = (int)distanceThresholdSlider.Value;

            // Start the main window once all of the necessary parameters have been received.
            MainWindow mainWindow = new MainWindow(trainMachine, faceIdentity, trainingName, GetCameraNumber(), GetCameraFrameRate(),
                                                   GetResourceDisposal(), GetDistanceThresholdValue(), GetMachineInputSourceKind(), GetMainWindowTitle());

            mainWindow.Show();

            // Close the input selection window.
            Close();
        }
コード例 #2
0
        private void submit_OnClick(object sender, RoutedEventArgs e)
        {
            bool? fb = fileButton.IsChecked;
            bool? cb = cameraButton.IsChecked;
            bool fileChosen = false;
            bool cameraChosen = false;
            if (fb.HasValue)
                fileChosen = (bool) fb;
            if (cb.HasValue)
                cameraChosen = (bool)cb;
            if (fileChosen)
                machineInputSourceKind = MachineInputSourceKind.SourceFile;
            else if (cameraChosen)
            {
                machineInputSourceKind = MachineInputSourceKind.SourceWebcam;
                String text2 = cameraFrameRate.Text;
                String text = cameraNumberManual.Text;

                // The default value is zero, but could crash if there is no detectable camera.
                if (cameraList.IsEnabled)
                    cameraNumber = cameraList.SelectedIndex;
                if (advancedSettingsVisible && text.Length > 0)
                    cameraNumber = Int32.Parse(text);
                if (text2 == "") ;
                else
                    cameraFps = Int32.Parse(text2);
            }
            bool? rd = resourceDisposal.IsChecked;
            if (rd.HasValue)
                resDisposal = (bool)rd;
            distance = (int) distanceThresholdSlider.Value;

            // Start the main window once all of the necessary parameters have been received.
            mainWindow = new MainWindow(trainMachine, faceIdentity, trainingName, GetCameraNumber(), GetCameraFrameRate(),
                GetResourceDisposal(), GetDistanceThresholdValue(), GetMachineInputSourceKind(), GetMainWindowTitle(), GetMachineStartPage(),
                GetUIKind());
            mainWindow.Show();
            initialized = true;

            // Close the input selection window.
            Close();
        }
コード例 #3
0
        /***
         *  Function: public MainWindow(bool train, FaceIdentity fit, String nt, int cn, int fps, bool crd, int mdt, MachineInputSourceKind misk)
         *  Parameter(s): bool train
         *      Whether or not the machine is supposed to be training itself.
         *                FaceIdentity fit
         *      The classification of the person that the Machine is training itself to recognize (supposed to be equal to FaceIdentity.FaceNone during
         *      normal execution).
         *                String nt
         *      The name of the person that the Machine is training itself to recognize (supposed to be equal to "" during normal execution).
         *                int cn
         *      The camera number to used by the 'capture' variable.
         *                int fps
         *      The frame rate of the camera (not used when processing video files).
         *                bool crd
         *      Whether or not the Machine should dispose of resources (could potentially be unstable).
         *                int mdt
         *      The maxDistanceThreshold to use when classifying faces.
         *                 MachineInputSourceKind misk
         *      The input source from which the Machine will gather its input.
         *                 String t
         *      The title of this window.
         *                  MachineStartPage msp
         *      A reference to the main machine window to control.
         *  Return Value: N/A (Constructor)
         ***/
        public MainWindow(bool train, FaceIdentity fit, String nt, int cn, int fps, bool crd, int mdt,
                          MachineInputSourceKind misk, String t, MachineStartPage msp, UIKind uk)
        {
            machineStartPage       = msp;
            cameraResourceDisposal = crd;
            maxDistanceThreshold   = mdt;
            cameraNumber           = cn;
            cameraFrameRate        = fps;
            machineInputSourceKind = misk;
            if (misk == MachineInputSourceKind.SourceFile || misk == MachineInputSourceKind.SourceNone || train)
            {
                speechRecognitionOnline = true;
            }
            else
            {
                speechRecognitionOnline = true;
            }
            userSpeech = "";
            FileUtilities.DirectoryCreation();
            FileUtilities.TrainingDirectoryCreation();
            faceClassifier = new CascadeClassifier("assets\\haarcascade_frontalface_alt.xml");
            uikind         = uk;
            if (uikind == UIKind.UIMachine)
            {
                admin_focus     = new Bitmap("assets\\machine\\admin_focus.jpg");
                secondary_focus = new Bitmap("assets\\machine\\secondary_focus.jpg");
                threat_focus    = new Bitmap("assets\\machine\\threat_focus.jpg");
            }
            else
            {
                admin_focus     = new Bitmap("assets\\samaritan\\deviant_focus.jpg");
                secondary_focus = new Bitmap("assets\\samaritan\\irrelevant_focus.jpg");
                threat_focus    = new Bitmap("assets\\samaritan\\threat_focus.jpg");
            }
            machineIsTraining = train;
            //Check if the CORE_IMAGE_DATA.dat file exists and read the predefined width and height.
            if (File.Exists(FileUtilities.DirectoryName + "\\" + FileUtilities.CoreImageData))
            {
                String[] lines = File.ReadAllLines(FileUtilities.DirectoryName + "\\" + FileUtilities.CoreImageData);
                if (lines.Length != 0)
                {
                    String[] heightWidth = lines[0].Split('|');
                    facialRecognitionHeight = Int32.Parse(heightWidth[0]);
                    facialRecognitionWidth  = Int32.Parse(heightWidth[1]);
                }
            }
            FileUtilities.CoreImageDataCreation();
            // Check if the Machine is being trained or not.
            if (!train && fit == FaceIdentity.FaceNone && nt == "")
            {
                String[]                  lines2           = File.ReadAllLines(FileUtilities.DirectoryName + "\\" + FileUtilities.AssetIndexData);
                List <FaceIdentity>       faceIdentityList = new List <FaceIdentity>();
                List <String>             nList            = new List <String>();
                List <LBPHFaceRecognizer> lbphList         = new List <LBPHFaceRecognizer>();
                // Load the trained neural networks, list of names, and classifications.
                foreach (String line in lines2)
                {
                    String[] innerSplit = line.Split('^');
                    String   name       = innerSplit[0];
                    String   identifier = innerSplit[1];
                    String   file       = innerSplit[2];
                    if (identifier == adminIdentifier)
                    {
                        faceIdentityList.Add(FaceIdentity.FaceAdmin);
                    }
                    else if (identifier == auxAdminIdentifier)
                    {
                        faceIdentityList.Add(FaceIdentity.FaceAuxAdmin);
                    }
                    else if (identifier == assetIdentifier)
                    {
                        faceIdentityList.Add(FaceIdentity.FaceAsset);
                    }
                    else
                    {
                        PanicAndTerminateProgram();
                    }
                    nList.Add(name);
                    LBPHFaceRecognizer lbph = new LBPHFaceRecognizer();
                    lbph.Load(file);
                    lbphList.Add(lbph);
                }
                focusKindDatabase      = faceIdentityList.ToArray();
                nameDatabase           = nList.ToArray();
                lbphFaceRecognizerList = lbphList.ToArray();
                // Check to make sure the ANN, name, and classification database lengths are all equal.
                if (focusKindDatabase.Length == nameDatabase.Length && nameDatabase.Length == lbphFaceRecognizerList.Length)
                {
                    ;
                }
                else
                {
                    PanicAndTerminateProgram();
                }
            }
            faceIdentityTraining = fit;
            nameTraining         = nt;
            InitializeComponent();
            this.Title = t;

            Closed += (object sender, EventArgs args) =>
            {
                Environment.Exit(1);
            };
        }
コード例 #4
0
        /***
            Function: public MainWindow(bool train, FaceIdentity fit, String nt, int cn, int fps, bool crd, int mdt, MachineInputSourceKind misk)
            Parameter(s): bool train
                Whether or not the machine is supposed to be training itself.
                          FaceIdentity fit
                The classification of the person that the Machine is training itself to recognize (supposed to be equal to FaceIdentity.FaceNone during
                normal execution).
                          String nt
                The name of the person that the Machine is training itself to recognize (supposed to be equal to "" during normal execution).
                          int cn
                The camera number to used by the 'capture' variable.
                          int fps
                The frame rate of the camera (not used when processing video files).
                          bool crd
                Whether or not the Machine should dispose of resources (could potentially be unstable).
                          int mdt
                The maxDistanceThreshold to use when classifying faces.
                           MachineInputSourceKind misk
                The input source from which the Machine will gather its input.
                           String t
                The title of this window.
                            MachineStartPage msp
                A reference to the main machine window to control.
            Return Value: N/A (Constructor)
        ***/
        public MainWindow(bool train, FaceIdentity fit, String nt, int cn, int fps, bool crd, int mdt,
            MachineInputSourceKind misk, String t, MachineStartPage msp, UIKind uk)
        {
            machineStartPage = msp;
            cameraResourceDisposal = crd;
            maxDistanceThreshold = mdt;
            cameraNumber = cn;
            cameraFrameRate = fps;
            machineInputSourceKind = misk;
            if (misk == MachineInputSourceKind.SourceWebcam) {
                speechRecognitionOnline = true;
                userSpeech = "";
            }
            FileUtilities.DirectoryCreation();
            FileUtilities.TrainingDirectoryCreation();
            faceClassifier = new CascadeClassifier("assets\\haarcascade_frontalface_alt.xml");
            uikind = uk;
            if (uikind == UIKind.UIMachine) {
                admin_focus = new Bitmap("assets\\machine\\admin_focus.jpg");
                secondary_focus = new Bitmap("assets\\machine\\secondary_focus.jpg");
                threat_focus = new Bitmap("assets\\machine\\threat_focus.jpg");
            }
            else
            {
                admin_focus = new Bitmap("assets\\samaritan\\deviant_focus.jpg");
                secondary_focus = new Bitmap("assets\\samaritan\\irrelevant_focus.jpg");
                threat_focus = new Bitmap("assets\\samaritan\\threat_focus.jpg");
            }
            machineIsTraining = train;
            //Check if the CORE_IMAGE_DATA.dat file exists and read the predefined width and height.
            if (File.Exists(FileUtilities.DirectoryName + "\\" + FileUtilities.CoreImageData))
            {
                String[] lines = File.ReadAllLines(FileUtilities.DirectoryName + "\\" + FileUtilities.CoreImageData);
                if (lines.Length != 0)
                {
                    String[] heightWidth = lines[0].Split('|');
                    facialRecognitionHeight = Int32.Parse(heightWidth[0]);
                    facialRecognitionWidth = Int32.Parse(heightWidth[1]);
                }
            }
            FileUtilities.CoreImageDataCreation();
            // Check if the Machine is being trained or not.
            if (!train && fit == FaceIdentity.FaceNone && nt == "")
            {
                String[] lines2 = File.ReadAllLines(FileUtilities.DirectoryName + "\\" + FileUtilities.AssetIndexData);
                List<FaceIdentity> faceIdentityList = new List<FaceIdentity>();
                List<String> nList = new List<String>();
                List<LBPHFaceRecognizer> lbphList = new List<LBPHFaceRecognizer>();
                // Load the trained neural networks, list of names, and classifications.
                foreach (String line in lines2)
                {
                    String[] innerSplit = line.Split('^');
                    String name = innerSplit[0];
                    String identifier = innerSplit[1];
                    String file = innerSplit[2];
                    if (identifier == adminIdentifier)
                        faceIdentityList.Add(FaceIdentity.FaceAdmin);
                    else if (identifier == auxAdminIdentifier)
                        faceIdentityList.Add(FaceIdentity.FaceAuxAdmin);
                    else if (identifier == assetIdentifier)
                        faceIdentityList.Add(FaceIdentity.FaceAsset);
                    else
                        PanicAndTerminateProgram();
                    nList.Add(name);
                    LBPHFaceRecognizer lbph = new LBPHFaceRecognizer();
                    lbph.Load(file);
                    lbphList.Add(lbph);
                }
                focusKindDatabase = faceIdentityList.ToArray();
                nameDatabase = nList.ToArray();
                lbphFaceRecognizerList = lbphList.ToArray();
                // Check to make sure the ANN, name, and classification database lengths are all equal.
                if (focusKindDatabase.Length == nameDatabase.Length && nameDatabase.Length == lbphFaceRecognizerList.Length) ;
                else
                    PanicAndTerminateProgram();
            }
            faceIdentityTraining = fit;
            nameTraining = nt;
            InitializeComponent();
            this.Title = t;

            Closed += (object sender, EventArgs args) =>
            {
                Environment.Exit(1);
            };
        }