예제 #1
0
  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
예제 #2
0
 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!')
예제 #3
0
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