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、主程序运行


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

相关推荐
m0_74892036几秒前
如何利用宝塔面板设置网站限流策略_防止恶意高并发请求
jvm·数据库·python
bigcarp3 分钟前
windows server 2012上安装EdgeWebView2以支持pywebview项目
python
测试员周周3 分钟前
【CrewAI系列2】CrewAI 环境搭不好?纯小白从零部署指南,10 分钟搞定(命令可复制)
人工智能·python
m0_734949798 分钟前
C#怎么操作Redis缓存 C#如何用StackExchange.Redis连接和操作Redis数据【数据库】
jvm·数据库·python
2301_814809868 分钟前
PHP源码开发推荐使用哪种机箱_散热与扩展平衡选择【教程】
jvm·数据库·python
Absurd5879 分钟前
SQL分组统计时如何处理文本类型聚合_GROUP_CONCAT的用法
jvm·数据库·python
旷世奇才李先生9 分钟前
Python\+ERNIE实战:字节跳动式AI内容审核完整实现(附源码)
开发语言·人工智能·python
解救女汉子10 分钟前
如何通过C#读取Oracle数据库中的图片显示到WinForm_BLOB转Byte[]与流处理
jvm·数据库·python
2401_8359568113 分钟前
html标签怎样设置关键词_meta keywords是否仍有效【操作】
jvm·数据库·python
2301_8176722615 分钟前
golang如何调用Twilio语音短信API_golang Twilio语音短信API调用实战
jvm·数据库·python