基于Python+OpenCV的车流识别系统Day2

工作流程

  1. 用户启动程序 → 显示登录窗口

  2. 登录验证通过 → 发射成功信号

  3. 信号触发主窗口显示

  4. 登录窗口自动关闭

这种方式保持了良好的解耦,符合MVC设计模式,也便于后续扩展功能。

Day1的Login程序也已经修改完成,点击这里查看:基于Python+OpenCV的车流识别系统Day1

程序入口(app.py):
import sys
from PyQt5.QtWidgets import QApplication
from FormLogin import formLogin
from FormMain import FormMain


def run_app():
    app = QApplication(sys.argv)

    login_window = formLogin()
    main_window = FormMain()

    # 连接信号
    login_window.login_success.connect(main_window.show)

    login_window.show()
    sys.exit(app.exec_())


if __name__ == "__main__":
    run_app()
主程序(main.py):
import cv2,sys
from PyQt5.QtGui import QIcon, QPixmap
from PyQt5.QtWidgets import QApplication, QPushButton, QLabel, QFileDialog,QMainWindow


class FormMain(QMainWindow):#(QWidget)
    def __init__(self):
        super().__init__()
        #设置自身的大小
        self.resize(1248,832)
        self.setWindowTitle("OpenCV")
        #设置图标
        self.setWindowIcon(QIcon("./img/icon.jpg"))

        self.openFileBtn = QPushButton("打开文件",self)
        self.openFileBtn.setGeometry(50,20,150,50)
        self.openFileBtn.setStyleSheet("font-size: 30px")

        self.grayBtn = QPushButton("灰度处理",self)
        self.grayBtn.setGeometry(200,20,150,50)
        self.grayBtn.setStyleSheet("font-size: 30px")

        self.leftLab = QLabel("原图",self)
        self.leftLab.setGeometry(20,80,570,600)
        self.leftLab.setStyleSheet("qproperty-alignment: AlignCenter;background-color:white")#水平+垂直居中

        self.rightLab = QLabel("新图",self)
        self.rightLab.setGeometry(650,80,570,600)
        self.rightLab.setStyleSheet("qproperty-alignment: AlignCenter;background-color:white")

        self.openFileBtn.clicked.connect(self.openFile)
        self.grayBtn.clicked.connect(self.grayImg)

    def openFile(self):
        #打开文件弹窗
        self.img,imgType = QFileDialog.getOpenFileName(self,"打开文件","","*.jpg;;*png;;*")

        self.leftLab.setPixmap(QPixmap(self.img))
        self.leftLab.setScaledContents(True)#允许缩放



    def grayImg(self):
        img = cv2.imread(self.img)

        img_gray = cv2.cvtColor(img,cv2.COLOR_RGB2GRAY)

        newImage = "./img/gray2.jpg"
        cv2.imwrite(newImage,img_gray)

        self.rightLab.setPixmap(QPixmap(newImage))
        self.rightLab.setScaledContents(True)


if __name__=="__main__":
    app = QApplication(sys.argv)
    mainWin = FormMain()
    mainWin.show()
    sys.exit(app.exec_())
 eg.
基于Python+OpenCV的车流识别系统Day2_第1张图片

总结:今天先完善了程序的工作流程,实现了打开文件和灰度处理两个模块。

你可能感兴趣的:(机器学习,python,机器学习,opencv,计算机视觉,pyqt)