public DigitRecognitionScreen(
            IApplicationManager appManager,
            IEventService eventService)
        {
            this.appManager = appManager;

            var currentDirectory = Directory.GetCurrentDirectory();
            var imagePath        = Path.Combine(currentDirectory, "Resources", "train-images.idx3-ubyte");
            var labelPath        = Path.Combine(currentDirectory, "Resources", "train-labels.idx1-ubyte");

            if (!File.Exists(imagePath))
            {
                this.ExtractImagesFromZip();
            }

            // Extract the training data
            imageExtraction = new ImageExtraction(
                imagePath,
                labelPath,
                ImageWidth,
                ImageHeight);

            imageExtraction.LoadImages();

            imageCanvas = GetImageCanvas();

            feedbackText           = new Text("Training Network...", new Font("Resources\\font.ttf"));
            feedbackText.Position  = new Vector2f(appManager.GetWindowSize().X * 0.55f, appManager.GetWindowSize().Y / 2);
            feedbackText.FillColor = Color.Black;

            Task.Run(() =>
            {
                this.TrainNetwork();
                feedbackText.DisplayedString = "Ready to go";
            });

            eventService.RegisterKeyboardCallback(
                Id,
                new KeyPressCallbackEventArgs(Keyboard.Key.Right),
                NextImage);

            eventService.RegisterKeyboardCallback(
                Id,
                new KeyPressCallbackEventArgs(Keyboard.Key.Left),
                PreviousImage);
        }
예제 #2
0
        public int ExtractImages(int[] Page, int ExtractionType)
        {
            var           rs = new PdfReader(m_filename);
            PdfDictionary pg;// = rs.GetPageN(15);
            string        path    = "";
            var           imgext  = new ImageExtraction();
            int           nImages = 0;

            using (var r = new PdfReader(m_filename))
            {
                switch (ExtractionType)
                {
                case 1:    //When pages are not specified, extract images from the entire pdf
                           //Find images in all the pages
                {
                    for (int i = 1; i <= r.NumberOfPages; i++)
                    {
                        pg = rs.GetPageN(i);
                        var images = imgext.GetImagesFromPdf(pg, rs);
                        for (int cnt = 0; cnt < images.Count; cnt++)
                        {
                            path = Path.Combine(m_DirPath, String.Format(@"{0}_{1}.png", i, cnt + 1));
                            images[cnt].Save(path);
                            nImages++;
                        }
                    }
                    break;
                }


                case 2:     //When the more than 1 page is specified
                {
                    for (int i = 0; i < Page.Length; i++)
                    {
                        pg = rs.GetPageN(Page[i]);
                        var images = imgext.GetImagesFromPdf(pg, rs);
                        for (int cnt = 0; cnt < images.Count; cnt++)
                        {
                            path = Path.Combine(m_DirPath, String.Format(@"{0}_{1}.png", Page[i], cnt + 1));
                            images[cnt].Save(path);
                            nImages++;
                        }
                    }
                    break;
                }


                case 3:     //When only 1 page is specified
                {
                    pg = rs.GetPageN(Page[0]);
                    var images = imgext.GetImagesFromPdf(pg, rs);
                    for (int cnt = 0; cnt < images.Count; cnt++)
                    {
                        path = Path.Combine(m_DirPath, String.Format(@"{0}_{1}.png", Page[0], cnt + 1));
                        images[cnt].Save(path);
                        nImages++;
                    }
                    break;
                }
                }
            }

            return(nImages);
        }