Exemplo n.º 1
0
    def work(self):
        if self.naiveAlgorithm.isChecked():
            P = naive_algorithm(self.beforeDots, self.afterDots)
            P_inv = la.inv(P)
        elif self.dltAlgorithm.isChecked():
            P = show_dlt(self.beforeDots, self.afterDots)
            P_inv = la.inv(P)
        elif self.dltNormAlgorithm.isChecked():
            P = show_normalized(self.beforeDots, self.afterDots)
            P_inv = la.inv(P)
        else:
            msg = QMessageBox()
            msg.setIcon(QMessageBox.Critical)
            msg.setWindowTitle("Greška")
            msg.setText("Izaberite algoritam!")
            msg.exec_()
            return

        imgBefore = QImage(self.original_file)
        imgAfter = QPixmap(self.imageBefore.width(), self.imageBefore.height())
        imgAfter.fill(QColor("black"))
        imgAfter = imgAfter.toImage()

        for i in tqdm(range(imgBefore.width())):
            for j in range(imgBefore.height()):
                pixel = P_inv.dot(np.array([i, j, 1]))

                if pixel[0] < 0 or pixel[0] >= self.imageBefore.width():
                    continue

                if pixel[1] < 0 or pixel[1] >= self.imageBefore.height():
                    continue

                pix = imgBefore.pixelColor(pixel[0], pixel[1])
                imgAfter.setPixel(i, j, pix.rgb())

        self.imageAfter = QPixmap.fromImage(imgAfter)
        self.labelAfter.setPixmap(
            self.imageAfter.scaled(
                QSize(self.labelAfter.width(), self.labelAfter.height())))

        self.workButton.setEnabled(False)