Exemple #1
0
        double[] LookForOneFace(double[,] data)
        {
            double[,] img     = data.RotateImage();
            closestFace.Image = img.ImageFromArray();
            double[] weights = ImageTool.getWeights(eigFaces, img, avg);
            double[] cmp     = ImageTool.compareWeigths(libWeights, weights);

            return(cmp);
        }
Exemple #2
0
        /// <summary>
        /// entey point to form
        /// </summary>
        public FaceRecog()
        {
            InitializeComponent();

            foreach (FilterInfo videoCaptureDevice in InfoCollection)
            {
                streamDeviceChoiceBox.Items.Add(videoCaptureDevice.Name);
            }
            streamDeviceChoiceBox.SelectedIndex = 1;

            foreach (
                VideoCapabilities format in new VideoCaptureDevice(InfoCollection[streamDeviceChoiceBox.SelectedIndex]
                                                                   .MonikerString).VideoCapabilities)
            {
                formatsBox.Items.Add(format.FrameSize + " : " + format.AverageFrameRate + "FPS");
            }
            formatsBox.SelectedIndex = 1;

            FData = new FrameData();

            Counter          = new Counter(0, 20);
            CheckFaceCounter = new Counter(0, 10);

            LibCount = LoadLibrary(@"../../ImageLib/cfol/",
                                   512, 512, FACES_PER_PERSON);

            avg = ImageTool.GetAvg(lib);

            difLib = ImageTool.GetDifferenceArray(lib, avg);

            EigenObject eigVects = ImageTool.GetEigen(ImageTool.GetA(lib));

            ImageTool.normalize(eigVects.Vectors);

            eigFaces = ImageTool.getEigenFaces(eigVects.Vectors, difLib);

            libWeights = new double[lib.Length][];

            for (int i = 0; i < lib.Length; i++)
            {
                libWeights[i] = ImageTool.getWeights(eigFaces, lib[i], avg);
                // test - eigen then Sigma weight * each eigen
            }

            Image image = Image.FromFile(@"../../ImageLib/cfol/0101.bmp");

            QuickFaceDetect((Bitmap)image);
        }
Exemple #3
0
        /// <summary>
        ///
        /// </summary>
        /// <param name="directory"></param>
        /// <param name="width"></param>
        /// <param name="height"></param>
        /// <param name="subSet"></param>
        /// <returns></returns>
        private int LoadLibrary(string directory, int width, int height, int subSet)
        {
            string[] images = Directory.GetFiles(@directory, "*.bmp");


            if (subSet < 1)
            {
                subSet = 1;
            }
            lib = new double[images.Length][, ];
            int i = 0;

            foreach (string image in images)
            {
                lib[i++] = ImageTool.GetArray(new Bitmap(image));
            }
            if (subSet > 1)
            {
                lib = ImageTool.avgSubsets(lib, subSet);
            }
            return(images.Length / subSet);
        }