如何通过单击 GUI 上的按钮将图像获取到同一目录文件夹中的另一个 .py 文件中

Posted

技术标签:

【中文标题】如何通过单击 GUI 上的按钮将图像获取到同一目录文件夹中的另一个 .py 文件中【英文标题】:How can i get image by click button on GUI into another .py file in the same directory folder 【发布时间】:2019-04-25 11:22:54 【问题描述】:

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 中制作了一个GUI,当我通过gui def load_img(self): 上的单击按钮加载图像时,我想要classify.pyimage = cv2.imread("/") 的图像链接路径,但我不知道该怎么做。此外,我想如何在 GUI 中的文本标签上显示分类结果,我也不知道如何。 所以,我需要你的帮助,告诉我如何做到这一点。 非常感谢。

【问题讨论】:

使用按钮 正确格式化代码和错误信息 如何运行第二个脚本? (1) 在控制台中手动,(2) 在第一个脚本中使用 os.system() 或类似的 (3) 在第一个脚本中导入并从第二个脚本运行函数? 首先,感谢您正确编辑我的帖子格式。 我想通过单击 gui 上的一个按钮来运行第二个脚本代码,之后我通过单击 gui 上的另一个按钮将图像添加到第二个脚本代码的 image = cv2.imread("/") 中。请告诉我如何做到这一点。谢谢你 在第一个脚本中,您可以使用os.system("python classify.py your_path") 运行第二个脚本,它将在sys.argv 中获取路径,因此第二个脚本将需要cv2.imread(sys.argv[1]) 【参考方案1】:

classify.py 中将代码放入带参数的函数中,即。 path and then you canimportit and run function with your image filename as parametr. If function will return image thenmain`可以拿到并显示。

分类.py

def run(path)

    image = cv2.imread(path)

    # ... machine learning code ...

    return image

main.py - 见 importimage = 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_())

【讨论】:

请在下面回答我的评论。 如果您有新问题,请在新页面上创建新问题。您将有更多的地方存放代码和错误消息。 *** 不是论坛,只有一个问题(以及许多答案/解决方案)

以上是关于如何通过单击 GUI 上的按钮将图像获取到同一目录文件夹中的另一个 .py 文件中的主要内容,如果未能解决你的问题,请参考以下文章

如何在 React Native youtube iframe 中切换到全屏(单击 YouTube 播放器 gui 上的全屏按钮旋转到横向)?

如何通过将鼠标悬停在同一页面上的图像上来触发 CSS 动画按钮

如何通过单击tkinter中不同窗口中的按钮来获取位于窗口中的GUI文本字段的参数? [重复]

将图像从 Android 上的可绘制资源保存到 sdcard

通过单击按钮将焦点设置到另一个控件

如何通过单击swift4中的addImage按钮将图像一张一张添加到tableviewcell中