Exemplo n.º 1
0
        public void action(string teacher, string student, string imagePath)
        {
            /// Get scan image and resize it
            scannedImage = System.Drawing.Image.FromFile(imagePath);
            scannedImage = (System.Drawing.Image)ImageUtilities.ResizeImage((Bitmap)scannedImage, 2100, 2100 * scannedImage.Height / scannedImage.Width);
            Bitmap        unf    = new Bitmap(scannedImage);
            OpticalReader reader = new OpticalReader();

            scannedImage = (System.Drawing.Image)reader.ExtractOMRSheet(unf, "sheets.xml", OMREnums.OMRSheet.A550);

            /// Get user selected options
            Rectangle[] Blocks = new Rectangle[]
            {
                OMRSheetReader.GetSheetPropertyLocation("sheets", OMREnums.OMRSheet.A550, OMREnums.OMRProperty.tensBlock1),
                OMRSheetReader.GetSheetPropertyLocation("sheets", OMREnums.OMRSheet.A550, OMREnums.OMRProperty.tensBlock2),
                OMRSheetReader.GetSheetPropertyLocation("sheets", OMREnums.OMRSheet.A550, OMREnums.OMRProperty.tensBlock3),
                OMRSheetReader.GetSheetPropertyLocation("sheets", OMREnums.OMRSheet.A550, OMREnums.OMRProperty.tensBlock4)
            };

            List <Bitmap[]> bmps = new List <Bitmap[]>();

            for (int i = 0; i < 4; i++)
            {
                bmps.Add(SliceOMarkBlock(scannedImage, Blocks[i], 10));
            }

            string ans = "";

            foreach (Bitmap[] blk in bmps)
            {
                foreach (Bitmap line in blk)
                {
                    ans += rateSlice(line, 5) + ",";
                }
            }
            Console.WriteLine(ans);

            /// Get exam ID
            OpticalReader rr     = new OpticalReader();
            int           examId = Convert.ToInt32(rr.getRegNumOfSheet(scannedImage, OMREnums.OMRSheet.A550, "sheets.xml", false).ToString());

            Console.WriteLine(examId);
            Console.Read();

            /// Return to Java application
            string jarPath = "E-Marker.jar";
            string argumentsFortheJarFile = "\"" + teacher + "\" \"" + student + "\" " + examId + " " + ans;

            System.Diagnostics.Process clientProcess = new Process();
            clientProcess.StartInfo.FileName  = "java";
            clientProcess.StartInfo.Arguments = @"-jar " + jarPath + " " + argumentsFortheJarFile;
            clientProcess.Start();
            clientProcess.WaitForExit();
        }
Exemplo n.º 2
0
        private void button6_Click(object sender, EventArgs e)
        {
            ts            = new TimeSpan(DateTime.Now.Ticks);
            textBox1.Text = "";
            showTimeStamp("Process Started");
            if (!loadLast_cb.Checked)
            {
                panel1.BackgroundImage = System.Drawing.Image.FromFile(filenamet.Text);
            }
            showTimeStamp("Image Read");
            panel1.BackgroundImage = (System.Drawing.Image)ImageUtilities.ResizeImage((Bitmap)panel1.BackgroundImage, 2100, 2100 * panel1.BackgroundImage.Height / panel1.BackgroundImage.Width);
            panel1.Invalidate();
            Application.DoEvents();
            showTimeStamp("Resized");
            Application.DoEvents();
            Bitmap        unf    = new Bitmap(panel1.BackgroundImage);
            OpticalReader reader = new OpticalReader();

            panel1.BackgroundImage = (System.Drawing.Image)reader.ExtractOMRSheet(unf, "sheets.xml", OMREnums.OMRSheet.A550);
            showTimeStamp("OMR Extraction Finished");
            panel1.Invalidate();
        }
Exemplo n.º 3
0
        void cmdexec()
        {
            opr        = new OpticalReader("projectY.Resources.", sxml, dbpath);
            sFileFails = new List <string>();
            List <List <int> > answers;

            nCount              = 1;
            nSuccess            = 0;
            button1.Text        = "STOP";
            mnuClearLog.Enabled = false;
            foreach (string s in sFiles)
            {
                Application.DoEvents();
                if (!running)
                {
                    break;
                }
                imgsrc      = new Bitmap(s);
                panel.Image = imgsrc;
                sMsg        = "";
                showTimeStamp("Processing " + s + " (" + nCount + " of " + nFiles + ")", false);
                crc = 0;
                if (ProcessImage())
                {
                    try
                    {
                        Application.DoEvents();
                        srn     = opr.getRegNumOfSheet(panel.Image, false);
                        answers = opr.getScoreOfSheet(panel.Image);
                        nSuccess++;
                        if (srn > 0)
                        {
                            showTimeStamp("Sheet No. " + srn, false);
                        }
                        else
                        {
                            showTimeStamp("Invalid sheet number", false);
                        }
                        if (opr.answers.Count == 0)
                        {
                            showTimeStamp("No valid answer keys loaded.", false);
                        }
                        showTimeStamp("Answers:", false);
                        idc = 1;
                        for (int ni = 0; ni < opr.defnumblocks; ni++)
                        {
                            foreach (int ni2 in answers[ni])
                            {
                                if (opr.answers.Count > 0)
                                {
                                    if (ni2 == opr.answers[idc - 1].Y)
                                    {
                                        showTimeStamp(idc + ". " + ni2 + " : Correct", false);
                                        crc++;
                                    }
                                    else
                                    {
                                        showTimeStamp(idc + ". " + ni2 + " : WRONG", false);
                                    }
                                }
                                else
                                {
                                    showTimeStamp(idc + ". " + ni2, false);
                                }
                                idc++;
                            }
                        }
                        if (srn >= 0 && opr.answers.Count > 0)
                        {
                            opr.saveresults(answers, srn);
                            showTimeStamp("Score: " + crc + "/" + --idc + " (SAVED)", false);
                        }
                        else
                        {
                            showTimeStamp("Score: " + crc + "/" + --idc + " (NOT SAVED. Invalid sheet number or no answer keys found.)", false);
                        }
                    }
                    catch (Exception ei)
                    {
                        sFileFails.Add(s);
                        showTimeStamp("Error processing scores." + ei.Message, false);
                    }
                }
                else
                {
                    sFileFails.Add(s);
                }
                nCount++;
            }
            if (!userended)
            {
                showTimeStamp("Done: " + nSuccess + "/" + nFiles + " success", false);
                foreach (string sss in sFileFails)
                {
                    showTimeStamp("Failed: " + sss, false);
                }
                MessageBox.Show("Done.");
            }
            else
            {
                showTimeStamp("Processing ended, user-signaled.", false);
                MessageBox.Show("User terminated processing.");
            }
            statusStrip1.Items[0].Text = "Status: DONE";
            button1.Text        = "START";
            running             = false;
            mnuClearLog.Enabled = true;
        }
Exemplo n.º 4
0
        private void button8_Click(object sender, EventArgs e)
        {
            OpticalReader rr = new OpticalReader();

            MessageBox.Show("Found registration number: " + rr.getRegNumOfSheet(panel1.BackgroundImage, OMREnums.OMRSheet.A550, "sheets.xml", false).ToString());
        }