| | |
| | | xpos = d[0].rect.left |
| | | ypos = d[0].rect.top |
| | | # check if image is rotated wrongly |
| | | if xpos > self.imgHeight / 2.0 and ypost > self.imgWidth / 2.0: |
| | | if xpos > self.imgHeight / 2.0 and ypos > self.imgWidth / 2.0: |
| | | self.rotateAngle(180) |
| | | |
| | | def rotateAngle(self, angle=0): |
| | | #rot_mat = cv2.getRotationMatrix2D( |
| | | # (self.imgHeight / 2, self.imgWidth / 2), angle, 1.0 |
| | | #) |
| | | rot_mat = cv2.getRotationMatrix2D( |
| | | (self.imgHeight / 2, self.imgWidth / 2), angle, 1.0 |
| | | (self.imgWidth/2, self.imgHeight/2), angle, 1.0 |
| | | ) |
| | | result = cv2.warpAffine( |
| | | self.img, |
| | | rot_mat, |
| | | (self.imgHeight, self.imgWidth), |
| | | (self.imgWidth, self.imgHeight), |
| | | flags=cv2.INTER_CUBIC, |
| | | borderMode=cv2.BORDER_CONSTANT, |
| | | borderValue=(255, 255, 255), |
| | |
| | | return "x" |
| | | if self.settings is not None: |
| | | sid_mask=self.settings.get("sid_mask", None) |
| | | es = getSID( |
| | | es,err,warn = getSID( |
| | | self.img[ |
| | | int(0.045 * self.imgHeight) : int(0.085 * self.imgHeight), |
| | | int(0.04 * self.imgHeight) : int(0.095 * self.imgHeight), |
| | | int(0.7 * self.imgWidth) : int(0.99 * self.imgWidth), |
| | | ], |
| | | self.sid_classifier, |
| | | sid_mask |
| | | ) |
| | | [self.errors.append(e) for e in err] |
| | | [self.warnings.append(w) for w in warn] |
| | | return es |
| | | |
| | | |
| | | def get_code_data(self): |
| | | if self.QRData is None: |
| | | self.errors.append("Could not read QR or EAN code! Not an exam?") |
| | | retval = {'exam_id': None, |
| | | 'page_no': None, |
| | | 'paper_id': None, |
| | | 'faculty_id': None, |
| | | 'sid':None |
| | | } |
| | | return retval |
| | | qrdata = bytes.decode(self.QRData, 'utf8') |
| | | if self.QRDecode[0].type=='EAN13': |
| | | return {'exam_id': int(qrdata[0:7]), |