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(); }
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(); }
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; }
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()); }