public static IEnumerable <FaceDetectionEntry> LoadDataset(string datasetPath, int width, int height, int n = -1)
        {
            var result = new ConcurrentBag <FaceDetectionEntry>();

            var fileNames = Directory.EnumerateFiles(Path.Combine(datasetPath, "faces"), "*.pgm");

            if (n != -1)
            {
                fileNames = fileNames.Take(n);
            }

            Parallel.ForEach(fileNames, filename =>
                             // foreach (var filename in fileNames)
            {
                Console.Write(".");
                var data  = new float[width * height];
                var pgm   = PgmImage.LoadImage(filename);
                var image = PgmImage.MakeBitmap(pgm);

                BitmapTool.ExtractData(width, height, data, image);

                result.Add(new FaceDetectionEntry {
                    IsFace = true, ImageData = data, Filename = filename
                });
            }
                             );

            return(result);
        }
示例#2
0
        private Bitmap GetImage(string filename)
        {
            if (filename.Contains("pgm"))
            {
                return(PgmImage.MakeBitmap(PgmImage.LoadImage(filename)));
            }

            return((Bitmap)Image.FromFile(filename));
        }