def loadimage(self): filename, _ = QFileDialog.getOpenFileName(self, 'Open file', './example/',"Image files (*.jpg *.gif *.png *.bmp)") if not filename: return self.filename = filename image = Image.open(filename) image = image.convert('RGB') image = ImageOps.grayscale(image) ### display image ### qim = ImageQt(image) qim = qim.scaledToWidth(256) pix = QPixmap.fromImage(qim) self.graph1.setPixmap(pix) self.label1.setText(os.path.split(filename)[-1]) self.graph2.setPixmap(pix) self.label2.setText('Click convert to convert') ### save as ndarray ### self.w, self.h = image.size w = self.w if self.w%32 == 0 else self.w - self.w%32 + 32 h = self.h if self.h%32 == 0 else self.h - self.h%32 + 32 image = image.resize((w,h)) T = transforms.Compose([transforms.ToTensor()]) image = T(image).unsqueeze(0) self.image = image
def convert(self): if self.image == None: QMessageBox.warning(self, 'Error : No iupt', 'Choose an input before convert!') return self.label2.setText('Converting') output = self.model(self.image) output = torch.squeeze(output, 0) T = transforms.Compose([transforms.ToPILImage()]) output = T(output) output = output.resize((self.w, self.h)) output = output.convert('RGBA') self.output = output.convert('RGB') qim = ImageQt(output) qim = qim.scaledToWidth(256) pix = QPixmap.fromImage(qim) self.graph2.setPixmap(pix) self.label2.setText('Convert done!')
class Scan(QObject): data_changed = pyqtSignal(QObject) def __init__(self, *args): super().__init__(*args) self.img = None self.base_img = None self.thumb = None self.filename = None self.height = 0 self.width = 0 @property def thumb_height(self): return self.height / (self.width / THUMBNAIL_WIDTH) @property def size(self): return (self.width, self.height) @size.setter def size(self, size): self.height, self.width = size def set_image(self, image): self.img = ImageQt(image) self.base_img = image self.create_thumb() self.data_changed.emit(self) def set_filename(self, filename): self.filename = filename self.data_changed.emit(self) def get_filename(self): return self.filename def create_thumb(self): self.thumb = self.img.scaledToWidth(THUMBNAIL_WIDTH, mode=Qt.SmoothTransformation) def get_thumb(self): return self.thumb def get_image(self): return self.img def _do_ocr(self, callback=None): temp_file, temp_filename = mkstemp(".pdf") pdf = pytesseract.image_to_pdf_or_hocr(self.base_img, extension="pdf", lang="deu") with open(temp_filename, "wb") as f: f.write(pdf) self.set_filename(temp_filename) if callback: callback() def do_ocr(self, callback=None): thread = Thread(target=self._do_ocr, args=[callback]) thread.start() return thread