Как я могу получить изображение, нажав кнопку на графическом интерфейсе в другой файл .py в той же папке каталога - PullRequest
0 голосов
/ 25 апреля 2019

main.py:

from PyQt5 import QtCore, QtGui, QtWidgets
from PyQt5.QtGui import QPixmap, QImage
import cv2
import os
class Ui_MainWindow(object):
    def setupUi(self, MainWindow):

        self.loadimg.clicked.connect(self.load_img)

    def load_img(self):
        load_img_1, filter = QtWidgets.QFileDialog.getOpenFileName(None, "Select Image",
                                                                    options=QtWidgets.QFileDialog.DontUseNativeDialog)
        img = cv2.imread(load_img_1)

        if img is None:
            self.imglabel.setText("Cannot load the input image.")
        else:
            img = cv2.cvtColor(img, cv2.COLOR_BGR2RGB)
            img_ = QImage(img.data, img.shape[1], img.shape[0], QImage.Format_RGB888)
            self.imglabel.setPixmap(QPixmap.fromImage(img_))
            pixmap = QPixmap.fromImage(img_)
            pixmap = pixmap.scaled(self.imglabel.width(), self.imglabel.height())
        if load_img_1:
            pixmap = QtGui.QPixmap(load_img_1)
            pixmap = pixmap.scaled(self.imglabel.width(), self.imglabel.height(),QtCore.Qt.KeepAspectRatio)
            self.imglabel.setPixmap(pixmap)
            self.imglabel.setAlignment(QtCore.Qt.AlignCenter)
            self.imglabel.setScaledContents(True)

if __name__ == "__main__":
    import sys
    app = QtWidgets.QApplication(sys.argv)
    MainWindow = QtWidgets.QMainWindow()
    ui = Ui_MainWindow()
    ui.setupUi(MainWindow)
    MainWindow.show()
    sys.exit(app.exec_())

classify.py:

image = cv2.imread("/")

Я новичок в изучении Python и машинного обучения.У меня есть проблемы с обучением.Я создаю графический интерфейс в main.py, и когда я загружаю изображение нажатием кнопки на графическом интерфейсе def load_img(self):, я хочу указать путь к ссылке на изображение до image = cv2.imread("/") в classify.py, но я не знаю, как это сделать.Кроме того, я хочу показать, как классифицировать результат на текстовой метке в графическом интерфейсе, и я тоже не знаю как.Итак, я должен помочь вам и показать, как я могу это сделать.Большое вам спасибо.

1 Ответ

0 голосов
/ 26 апреля 2019

В classify.py ввести код в функцию с параметром т.е. path and then you can import it and run function with your image filename as parametr. If function will return image then main` может получить его и отобразить.

classify.py

def run(path)

    image = cv2.imread(path)

    # ... machine learning code ...

    return image

main.py - см. import и image = clasify.run(filename)

from PyQt5 import QtCore, QtGui, QtWidgets
from PyQt5.QtGui import QPixmap, QImage
import cv2
import os

import classify # filename without .py

class Ui_MainWindow(object):
    def setupUi(self, MainWindow):

        self.loadimg.clicked.connect(self.load_img)

    def load_img(self):
        load_img_1, filter = QtWidgets.QFileDialog.getOpenFileName(None, "Select Image",
                                                                    options=QtWidgets.QFileDialog.DontUseNativeDialog)

        #img = cv2.imread(load_img_1)
        img = classify.run(load_img_1) # use it


        if img is None:
            self.imglabel.setText("Cannot load the input image.")
        else:
            img = cv2.cvtColor(img, cv2.COLOR_BGR2RGB)
            img_ = QImage(img.data, img.shape[1], img.shape[0], QImage.Format_RGB888)
            self.imglabel.setPixmap(QPixmap.fromImage(img_))
            pixmap = QPixmap.fromImage(img_)
            pixmap = pixmap.scaled(self.imglabel.width(), self.imglabel.height())
        if load_img_1:
            pixmap = QtGui.QPixmap(load_img_1)
            pixmap = pixmap.scaled(self.imglabel.width(), self.imglabel.height(),QtCore.Qt.KeepAspectRatio)
            self.imglabel.setPixmap(pixmap)
            self.imglabel.setAlignment(QtCore.Qt.AlignCenter)
            self.imglabel.setScaledContents(True)

if __name__ == "__main__":
    import sys
    app = QtWidgets.QApplication(sys.argv)
    MainWindow = QtWidgets.QMainWindow()
    ui = Ui_MainWindow()
    ui.setupUi(MainWindow)
    MainWindow.show()
    sys.exit(app.exec_())
...