PyQt5:构建目标检测算法GUI界面 (附python代码)

文章目录

1.界面

目标检测算法一般就是检测个图片,然后显示图片结果。

最简单的情况,我们需要一个按钮读取图片,然后后有一个地方显示图片。

2.代码

python 复制代码
import sys
import numpy as np
from PIL import Image

from PyQt5.QtGui import QImage, QPixmap, QIcon, QColor
from PyQt5.QtCore import pyqtSlot, QSize, Qt
from PyQt5.QtWidgets import QApplication, QTextBrowser, QWidget, QLabel, QPushButton, QFileDialog, QFrame


class Example(QWidget):
    def __init__(self):
        QWidget.__init__(self)
    
        #-----------------------------#
        #   界面显示相关内容
        #-----------------------------#
        self.initUI()

    def initUI(self):
        #-----------------------------#
        #   初始化标题,界面大小
        #-----------------------------#
        self.resize(900, 540)
        self.setWindowTitle('Easy Object Detection GUI')

        #-----------------------------#
        #   获取图片按钮
        #-----------------------------#
        self.btn_photo = QPushButton('获取图片', self)
        self.btn_photo.setToolTip('点击后从电脑中读取图片')
        self.btn_photo.setIcon(QIcon("img/icon/Search.jpeg"))
        self.btn_photo.setIconSize(QSize(30, 30))
        self.btn_photo.resize(100, 40)
        self.btn_photo.move(10, 10)   
        self.btn_photo.clicked.connect(self.openimage)

        #-----------------------------#
        #   写一段话
        #   放到10,500
        #   拉伸长度为200,30
        #-----------------------------#
        self.text_browser = QTextBrowser(self)
        self.text_browser.move(10, 500)
        self.text_browser.resize(200, 30)
        self.text_browser.setText("Happy New Day")
        self.text_browser.setStyleSheet("border:none;background-color:rgba(100,255,255,255)")

        #-----------------------------#
        #   写一段话
        #   放到10,60
        #   拉伸长度为200,30
        #-----------------------------#
        self.origin_text = QTextBrowser(self)
        self.origin_text.setTextColor(QColor(23,32,32))
        self.origin_text.move(10, 60)
        self.origin_text.resize(200, 30)
        self.origin_text.setText("Inputs:")
        self.origin_text.setStyleSheet("border:none;background-color:rgba(0,0,0,0)")

        #-----------------------------#
        #   写一段话
        #   放到10,60
        #   拉伸长度为200,30
        #-----------------------------#
        self.output_text = QTextBrowser(self)
        self.output_text.move(480, 60)
        self.output_text.resize(200, 30)
        self.output_text.setText("Outputs:")
        self.output_text.setStyleSheet("border:none;background-color:rgba(0,0,0,0)")
        
        #-----------------------------#
        #   搞个箭头好看点
        #-----------------------------#
        self.arrow_text = QTextBrowser(self)
        self.arrow_text.move(410, 275)
        self.arrow_text.resize(200, 50)
        self.arrow_text.setText("→")
        self.arrow_text.setStyleSheet("border:none;background-color:rgba(0,0,0,0);font-size:50px")

        #-----------------------------#
        #   设置显示的图片
        #-----------------------------#
        self.label_h = 384
        self.label_w = 384
        self.label_show_input = QLabel(self)
        self.label_show_input.move(10, 100)
        self.label_show_input.setFixedSize(self.label_w, self.label_h)
        self.label_show_input.setText("Inputs!")
        self.label_show_input.setStyleSheet("QLabel{background:white;}")
        self.label_show_input.setObjectName("Inputs")

        #-----------------------------#
        #   设置显示的图片
        #-----------------------------#
        self.label_h = 384
        self.label_w = 384
        self.label_show_camera = QLabel(self)
        self.label_show_camera.move(480, 100)
        self.label_show_camera.setFixedSize(self.label_w, self.label_h)
        self.label_show_camera.setText("Outputs!")
        self.label_show_camera.setStyleSheet("QLabel{background:white;}")
        self.label_show_camera.setObjectName("Outputs")

        self.show()

    #-----------------------------#
    #   打开图片模式
    #-----------------------------#
    @pyqtSlot()
    def openimage(self):
        imgName, _ = QFileDialog.getOpenFileName(self, "打开图片", "", "Images (*.jpg, *.png);;All Files(*)")
        if len(imgName)==0:
            return
        show = Image.open(imgName).convert("RGB")
        show = show.resize([self.label_w, self.label_h])

        showImage = QImage(np.array(show), np.shape(show)[1],  np.shape(show)[0], QImage.Format_RGB888)
        self.label_show_input.setPixmap(QPixmap.fromImage(showImage))
        
if __name__ == '__main__':
    app = QApplication(sys.argv)
    ex = Example()
    sys.exit(app.exec_())

3.Analyze

1、窗口构建

a、按钮:获取图片

b、Inputs、Outputs文本提示

c、Inputs、Outputs图片显示

d、箭头显示

e、整点祝福

2、主程序运行


欢迎在评论区讨论本文或与博主私聊,欢迎点赞收藏评论三连。

相关推荐
多恩Stone12 小时前
【C++入门扫盲1】C++ 与 Python:类型、编译器/解释器与 CPU 的关系
开发语言·c++·人工智能·python·算法·3d·aigc
QQ40220549613 小时前
Python+django+vue3预制菜半成品配菜平台
开发语言·python·django
百锦再13 小时前
Django实现接口token检测的实现方案
数据库·python·django·sqlite·flask·fastapi·pip
QQ51100828513 小时前
python+springboot+django/flask的校园资料分享系统
spring boot·python·django·flask·node.js·php
QQ_196328847513 小时前
Python-flask框架西山区家政服务评价系统网站设计与开发-Pycharm django
python·pycharm·flask
遥遥江上月13 小时前
Node.js + Stagehand + Python 部署
开发语言·python·node.js
B站计算机毕业设计超人13 小时前
计算机毕业设计Django+Vue.js音乐推荐系统 音乐可视化 大数据毕业设计 (源码+文档+PPT+讲解)
大数据·vue.js·hadoop·python·spark·django·课程设计
B站_计算机毕业设计之家13 小时前
电影知识图谱推荐问答系统 | Python Django系统 Neo4j MySQL Echarts 协同过滤 大数据 人工智能 毕业设计源码(建议收藏)✅
人工智能·python·机器学习·django·毕业设计·echarts·知识图谱
计算机专业码农一枚13 小时前
Python-flask框架基于推荐算法的在线课程推荐系统设计与实现-Pycharm django
python·flask·推荐算法
ATCB13 小时前
零门槛!PythonAnywhere 免费部署全指南:不止 Django,这些项目都能搭(附主流平台对比)
后端·python·django