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 --- aoiOcr.py | 7 ++++--- aoi_ocr/template-sq.png | 0 aoi_ocr/Ocr.py | 22 ++++++++++++++-------- 3 files changed, 18 insertions(+), 11 deletions(-) diff --git a/aoiOcr.py b/aoiOcr.py index be3f863..295faa4 100644 --- a/aoiOcr.py +++ b/aoiOcr.py @@ -26,7 +26,8 @@ "processed_scans/20160408140801098_0004.tif", "processed_scans/20160510075445995_0026.tif" ] -p=Paper(filename=pa[9], sid_classifier=classifier, settings=settings) +#p=Paper(filename=pa[9], sid_classifier=classifier, settings=settings) +p=Paper(filename='test3.tif', sid_classifier=classifier, settings=settings) # print(p.QRData) # print(p.errors) @@ -40,7 +41,7 @@ print(p.get_paper_ocr_data()) - +exit(0) filelist = glob("processed_scans/*.tif") wrong_sid=0; total=0 @@ -55,4 +56,4 @@ if total%10 == 0: print("Total:{}, wrong SID: {}".format(total,wrong_sid)) -print("Total:{}, wrong SID: {}".format(total,wrong_sid)) \ No newline at end of file +print("Total:{}, wrong SID: {}".format(total,wrong_sid)) 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) diff --git a/aoi_ocr/template-sq.png b/aoi_ocr/template-sq.png new file mode 100644 index 0000000..8e14973 --- /dev/null +++ b/aoi_ocr/template-sq.png Binary files differ -- Gitblit v1.9.3