From 9c222b2a0b151e7219e30f0145aa92872890d838 Mon Sep 17 00:00:00 2001
From: Samo Penic <samo.penic@gmail.com>
Date: Wed, 21 Nov 2018 18:48:59 +0000
Subject: [PATCH] Fixes in qr code, in sid third algoritm in answer matrix finding locations...

---
 aoiOcr.py              |    2 +-
 aoi_ocr/Ocr.py         |   15 ++++++++-------
 aoi_ocr/sid_process.py |   12 ++++++------
 3 files changed, 15 insertions(+), 14 deletions(-)

diff --git a/aoiOcr.py b/aoiOcr.py
index 295faa4..eff067f 100644
--- a/aoiOcr.py
+++ b/aoiOcr.py
@@ -6,7 +6,7 @@
 
 from glob import glob
 
-settings = {"sid_mask": "64xx0xxx", "answer_threshold": 0.25}
+settings = {"sid_mask": "11x0xxxx", "answer_threshold": 0.25}
 classifier = joblib.load(filepath)
 
 #p = Paper(filename="testpage300dpi_scan1.png")
diff --git a/aoi_ocr/Ocr.py b/aoi_ocr/Ocr.py
index bc7f062..e022ff1 100644
--- a/aoi_ocr/Ocr.py
+++ b/aoi_ocr/Ocr.py
@@ -99,7 +99,8 @@
         # todo, make better tresholding
     def imgTreshold(self):
         (self.thresh, self.bwimg) = cv2.threshold(
-            self.img, 128, 255, cv2.THRESH_BINARY | cv2.THRESH_OTSU
+            self.img, 128, 255,
+            cv2.THRESH_BINARY | cv2.THRESH_OTSU
         )
 
     def getSkewAngle(self):
@@ -242,7 +243,7 @@
         es, err, warn = getSID(
             self.img[
                 int(0.04 * self.imgHeight) : int(0.095 * self.imgHeight),
-                int(0.7 * self.imgWidth) : int(0.99 * self.imgWidth),
+                int(0.65 * self.imgWidth) : int(0.95 * self.imgWidth),
             ],
             self.sid_classifier,
             sid_mask,
@@ -275,7 +276,7 @@
             data = qrdata.split(",")
             retval = {
                 "exam_id": int(data[1]),
-                "page_no": int(data[3])+1,
+                "page_no": int(data[3]),
                 "paper_id": int(data[2]),
                 "faculty_id": int(data[0]),
                 "sid": None
@@ -291,17 +292,17 @@
         data["errors"] = self.errors
         data["warnings"] = self.warnings
         data["up_position"] = (
-            list(self.xMarkerLocations[1] / self.imgWidth),
-            list(self.yMarkerLocations[1] / self.imgHeight),
+            list(self.xMarkerLocations[0] / self.imgWidth),
+            list(self.xMarkerLocations[1] / self.imgHeight),
         )
         data["right_position"] = (
-            list(self.xMarkerLocations[1] / self.imgWidth),
+            list(self.yMarkerLocations[0] / self.imgWidth),
             list(self.yMarkerLocations[1] / self.imgHeight),
         )
         data["ans_matrix"] = (
             (np.array(self.answerMatrix) > self.settings["answer_threshold"]) * 1
         ).tolist()
-        if data["sid"] is None and data["page_no"] == 2:
+        if data["sid"] is None and data["page_no"] == 1:
             data["sid"] = self.get_enhanced_sid()
         output_filename=os.path.join(self.output_path, '.'.join(self.filename.split('/')[-1].split('.')[:-1])+".png")
         cv2.imwrite(output_filename, self.img)
diff --git a/aoi_ocr/sid_process.py b/aoi_ocr/sid_process.py
index 04dbc8d..d8798f1 100644
--- a/aoi_ocr/sid_process.py
+++ b/aoi_ocr/sid_process.py
@@ -17,14 +17,14 @@
 
 def find_biggest_blob(image, original_image,sid_mask):
     if sid_mask[0] == "1":
-        move_left = 45
+        move_left = 35
     elif sid_mask[0] == "x":
-        move_left = 55
+        move_left = 40
     else:
         move_left = 0
        # Remove noise
     image2 = cv2.morphologyEx(
-        original_image, cv2.MORPH_OPEN, kernel(2, 2), iterations=7
+        original_image, cv2.MORPH_OPEN, kernel(2, 2), iterations=3
     )
     # find biggest block of pixels
     image1 = cv2.morphologyEx(image2, cv2.MORPH_DILATE, kernel(5, 25), iterations=4)
@@ -186,14 +186,14 @@
     sid_err = []
     image = 255 - image
     image_original = image.copy()
-    image = img_as_ubyte(image > 100)
+    image = img_as_ubyte(image > 70)
     cv2.imwrite("/tmp/enSID0.png", image)
 
     # Remove noise
-    image = cv2.morphologyEx(image, cv2.MORPH_OPEN, kernel(2, 2), iterations=3)
+    #image = cv2.morphologyEx(image, cv2.MORPH_OPEN, kernel(2, 2), iterations=3)
 
     # Closing. Connect non connected parts
-    image = cv2.morphologyEx(image, cv2.MORPH_CLOSE, kernel(5, 3), iterations=4)
+    image = cv2.morphologyEx(image, cv2.MORPH_CLOSE, kernel(5, 1), iterations=4)
 
     # Again noise removal after closing
     # image = cv2.morphologyEx(image, cv2.MORPH_OPEN, kernel(8, 8), iterations=1)

--
Gitblit v1.9.3