From d88ce4da04499fd9f48d7a21a7ecded8535e9ab2 Mon Sep 17 00:00:00 2001
From: Samo Penic <samo.penic@gmail.com>
Date: Wed, 21 Nov 2018 17:50:23 +0000
Subject: [PATCH] Fixing template matching
---
aoi_ocr/Ocr.py | 22 ++++++++++++++--------
1 files changed, 14 insertions(+), 8 deletions(-)
diff --git a/aoi_ocr/Ocr.py b/aoi_ocr/Ocr.py
index f4b2eae..bc7f062 100644
--- a/aoi_ocr/Ocr.py
+++ b/aoi_ocr/Ocr.py
@@ -5,7 +5,7 @@
import os
import pkg_resources
-markerfile = '/template.png' # always use slash
+markerfile = '/template-sq.png' # always use slash
markerfilename = pkg_resources.resource_filename(__name__, markerfile)
@@ -41,6 +41,7 @@
return
self.decodeQRandRotate()
self.imgTreshold()
+ cv2.imwrite('/tmp/debug_threshold.png', self.bwimg)
skewAngle = 0
# try:
# skewAngle=self.getSkewAngle()
@@ -96,7 +97,6 @@
self.imgHeight, self.imgWidth = self.img.shape[0:2]
# todo, make better tresholding
-
def imgTreshold(self):
(self.thresh, self.bwimg) = cv2.threshold(
self.img, 128, 255, cv2.THRESH_BINARY | cv2.THRESH_OTSU
@@ -135,7 +135,7 @@
def locateUpMarkers(self, threshold=0.85, height=200):
template = cv2.imread(markerfilename, 0)
w, h = template.shape[::-1]
- crop_img = self.img[0:height, :]
+ crop_img = self.bwimg[0:height, :]
res = cv2.matchTemplate(crop_img, template, cv2.TM_CCOEFF_NORMED)
loc = np.where(res >= threshold)
cimg = cv2.cvtColor(crop_img, cv2.COLOR_GRAY2BGR)
@@ -172,7 +172,8 @@
def locateRightMarkers(self, threshold=0.85, width=200):
template = cv2.imread(markerfilename, 0)
w, h = template.shape[::-1]
- crop_img = self.img[:, -width:]
+ crop_img = self.bwimg[:, -width:]
+ cv2.imwrite('/tmp/debug_right.png', crop_img)
res = cv2.matchTemplate(crop_img, template, cv2.TM_CCOEFF_NORMED)
loc = np.where(res >= threshold)
cimg = cv2.cvtColor(crop_img, cv2.COLOR_GRAY2BGR)
@@ -188,9 +189,13 @@
loc_filtered_y.append(pt[1])
loc_filtered_x.append(pt[0])
# order by y coordinate
- loc_filtered_y, loc_filtered_x = zip(
- *sorted(zip(loc_filtered_y, loc_filtered_x))
- )
+ try:
+ loc_filtered_y, loc_filtered_x = zip(
+ *sorted(zip(loc_filtered_y, loc_filtered_x))
+ )
+ except:
+ self.yMarkerLocations=[np.array([1,1]),np.array([1,2])]
+ return self.yMarkerLocations
# loc=[loc_filtered_y,loc_filtered_x]
# remove duplicates
a = np.diff(loc_filtered_y) > 40
@@ -273,6 +278,7 @@
"page_no": int(data[3])+1,
"paper_id": int(data[2]),
"faculty_id": int(data[0]),
+ "sid": None
}
if len(data) > 4:
retval["sid"] = data[4]
@@ -295,7 +301,7 @@
data["ans_matrix"] = (
(np.array(self.answerMatrix) > self.settings["answer_threshold"]) * 1
).tolist()
- if data["sid"] is None and data["page_no"] == 1:
+ if data["sid"] is None and data["page_no"] == 2:
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)
--
Gitblit v1.8.0