2024-09-01
售卖作品
00

目录

yolov7训练
系统集成
数据库报警记录查看
qt页面跳转方式
qt 的数据库某表查看页面如何写
源码下载

yolov7训练

yolov7:https://github.com/WongKinYiu/yolov7

人脸口罩数据集:链接:https://pan.baidu.com/s/1bnxJPnoRNwUfVzLxKjIvkQ?pwd=c0yc

300轮训练趋于稳定:

276/299 34.3G 0.0257 0.007348 0.00204 0.03509 1466 416 0.9493 0.8662 0.9207 0.6118 0.06233 0.01659 0.0317 277/299 34.3G 0.02548 0.007208 0.002046 0.03473 1397 416 0.9512 0.8673 0.9206 0.6138 0.06227 0.0166 0.03165 278/299 34.3G 0.02532 0.007306 0.001777 0.0344 1487 416 0.9605 0.8608 0.9207 0.6124 0.06215 0.01658 0.03148 279/299 34.3G 0.02536 0.007267 0.00177 0.0344 1447 416 0.9605 0.8605 0.921 0.6127 0.06217 0.01652 0.03169 280/299 34.3G 0.02569 0.007402 0.001857 0.03495 1581 416 0.9475 0.8719 0.9223 0.6111 0.06234 0.01662 0.03161 281/299 34.3G 0.02528 0.007174 0.001653 0.03411 1525 416 0.9539 0.8662 0.9215 0.6138 0.06228 0.01673 0.03155 282/299 34.3G 0.02548 0.007163 0.001838 0.03448 1497 416 0.9445 0.8734 0.922 0.6131 0.06231 0.01659 0.032 283/299 34.3G 0.02502 0.00728 0.001912 0.03421 1581 416 0.9623 0.8628 0.9217 0.6129 0.06229 0.01658 0.03189 284/299 34.3G 0.0256 0.00737 0.001769 0.03474 1443 416 0.953 0.87 0.9205 0.6125 0.0622 0.01653 0.03176 285/299 34.3G 0.02513 0.00714 0.001742 0.03401 1407 416 0.9554 0.8657 0.9196 0.6116 0.0622 0.01652 0.03188 286/299 34.3G 0.02545 0.007449 0.001775 0.03468 1489 416 0.96 0.8633 0.9201 0.6109 0.0622 0.01662 0.03191 287/299 34.3G 0.02528 0.007087 0.00196 0.03433 1576 416 0.9434 0.8748 0.9204 0.6096 0.06215 0.0166 0.03185 288/299 34.3G 0.02556 0.007509 0.00175 0.03481 1435 416 0.944 0.8723 0.9187 0.6102 0.06218 0.01653 0.0319 289/299 34.3G 0.02504 0.007301 0.001822 0.03416 1432 416 0.9412 0.8713 0.9192 0.6112 0.06223 0.0165 0.03185 290/299 34.3G 0.0254 0.007088 0.001781 0.03427 1531 416 0.9587 0.86 0.9185 0.611 0.06227 0.01651 0.03189 291/299 34.3G 0.02507 0.007189 0.001821 0.03408 1431 416 0.9585 0.8635 0.9199 0.612 0.06223 0.01658 0.03172 292/299 34.3G 0.02508 0.00739 0.001682 0.03415 1519 416 0.9615 0.8644 0.92 0.6137 0.06216 0.01661 0.03165 293/299 34.3G 0.02538 0.00718 0.001836 0.03439 1348 416 0.9599 0.8617 0.9186 0.6131 0.06213 0.01657 0.03178 294/299 34.3G 0.02553 0.007235 0.002009 0.03477 1330 416 0.95 0.8668 0.9186 0.6109 0.06213 0.01662 0.03183 295/299 34.3G 0.02568 0.007386 0.00182 0.03489 1599 416 0.9563 0.8642 0.9201 0.6123 0.06213 0.01664 0.03188 296/299 34.3G 0.02541 0.007049 0.001726 0.03419 1528 416 0.9507 0.8662 0.9194 0.6127 0.06217 0.01665 0.03198 297/299 34.3G 0.0251 0.007234 0.001805 0.03414 1395 416 0.9429 0.8727 0.919 0.6114 0.06224 0.01664 0.03192 298/299 34.3G 0.02508 0.006955 0.001866 0.0339 1465 416 0.9458 0.8713 0.9197 0.6121 0.06223 0.01662 0.03193 299/299 34.3G 0.02551 0.007269 0.001724 0.0345 1555 416 0.9528 0.8664 0.9199 0.6123 0.0622 0.01658 0.03203

准确率曲线:

在这里插入图片描述

召回率曲线:

在这里插入图片描述

系统集成

Qt界面:

在这里插入图片描述

播放过程中,没戴口罩的人脸红色框,戴口罩的白色框。

在这里插入图片描述

在这里插入图片描述

数据库报警记录查看

sqlite数据库,可以查看报警信息,右键可以删除某条记录。

在这里插入图片描述

qt页面跳转方式

sqllite用着很便利,无需安装数据库服务。

qt中从主窗口跳转到别的窗口再回来的方法:

要在DatabaseViewer页面退出后返回到主页面,你需要进行以下操作:

1、在MainWindow类中,创建一个方法来显示DatabaseViewer页面。在这个方法中,实例化DatabaseViewer类,并将其显示为一个对话框或窗口。

python
from PyQt5.QtWidgets import QDialog class MainWindow(QWidget): # ... def show_database_viewer(self): # 调用并显示DatabaseViewer页面 self.database_viewer = DatabaseViewer() self.database_viewer.show()

2、在主页面的初始化方法中,连接history_btn按钮的点击事件到

python
def __init__(self): super().__init__() # ... self.history_btn.clicked.connect(self.show_database_viewer) # ...

3、在DatabaseViewer类中,添加一个属性来保存主页面的引用。

python
class DatabaseViewer(QMainWindow): def __init__(self, main_window): super().__init__() self.main_window = main_window # ...

4、在主页面的show_database_viewer方法中,将主页面的引用传递给DatabaseViewer类的实例。

python
def show_database_viewer(self): # 调用并显示DatabaseViewer页面 self.database_viewer = DatabaseViewer(self) self.database_viewer.show()

5、在DatabaseViewer类中,重写关闭事件的方法closeEvent。在关闭事件中,调用父类的关闭事件方法,并显示主页面。

python
class DatabaseViewer(QMainWindow): # ... def closeEvent(self, event): # 调用父类的关闭事件方法 super().closeEvent(event) # 显示主页面 self.main_window.show()

这样,当你在主页面点击"查看记录"按钮时,会调用show_database_viewer方法,显示DatabaseViewer页面。当你在DatabaseViewer页面关闭窗口时,会触发关闭事件,显示主页面。这样就可以在两个页面之间进行切换了。

qt 的数据库某表查看页面如何写

以下是参考:

python
import os import sys from PyQt5.QtWidgets import QApplication, QMainWindow, QTableView, QMenu, QAction, QMessageBox, QDesktopWidget, \ QHeaderView from PyQt5.QtCore import Qt from PyQt5.QtGui import QStandardItemModel, QStandardItem import sqlite3 class DatabaseViewer(QMainWindow): def __init__(self, main_window): super().__init__() self.main_window = main_window # 设置主窗口的大小为屏幕宽高的一半 screen_geometry = QDesktopWidget().screenGeometry() width = screen_geometry.width() // 2 height = screen_geometry.height() // 2 self.resize(width, height) # 连接到数据库文件 self.conn = sqlite3.connect('database.db') self.cursor = self.conn.cursor() self.table_view = QTableView(self) self.setCentralWidget(self.table_view) # 创建数据模型 self.model = QStandardItemModel() self.model.setColumnCount(3) self.model.setHorizontalHeaderLabels(['ID', '时间戳', '图片路径']) self.table_view.setModel(self.model) # 设置表格属性 self.table_view.setEditTriggers(QTableView.NoEditTriggers) self.table_view.setSelectionBehavior(QTableView.SelectRows) self.table_view.setSelectionMode(QTableView.SingleSelection) self.table_view.setContextMenuPolicy(Qt.CustomContextMenu) self.table_view.customContextMenuRequested.connect(self.show_context_menu) # 设置最后一列填充剩余空间 self.table_view.horizontalHeader().setStretchLastSection(True) # 设置第二列宽度为自定义宽度 self.table_view.horizontalHeader().setSectionResizeMode(1, QHeaderView.ResizeToContents) # 查询数据并显示 self.query_data() def query_data(self): # 查询数据 self.cursor.execute("SELECT * FROM warning_table") rows = self.cursor.fetchall() # 清空数据模型 self.model.removeRows(0, self.model.rowCount()) # 添加数据到数据模型 for row_data in rows: row = [QStandardItem(str(data)) for data in row_data] self.model.appendRow(row) def show_context_menu(self, position): # 右键菜单 menu = QMenu(self.table_view) delete_action = QAction("删除", self.table_view) delete_action.triggered.connect(self.delete_row) menu.addAction(delete_action) # 显示右键菜单 menu.exec_(self.table_view.viewport().mapToGlobal(position)) def delete_row(self): # 获取选中的行 selected_row = self.table_view.selectedIndexes() if selected_row: row = selected_row[0].row() item_id = self.model.item(row, 0) id_value = int(item_id.text()) # 拿出数据库里的此id的一行数据,有id、时间戳、图片路径,删除图片路径 self.cursor.execute("SELECT * FROM warning_table WHERE id = ?", (id_value,)) rows = self.cursor.fetchall() for row_data in rows: os.remove(row_data[2]) # 删除数据 self.cursor.execute("DELETE FROM warning_table WHERE id = ?", (id_value,)) self.conn.commit() # 从数据模型中移除该行 self.model.removeRow(row) QMessageBox.information(self, "提示", "删除成功") else: QMessageBox.warning(self, "警告", "请先选择要删除的行") def closeEvent(self, event): # 调用父类的关闭事件方法 super().closeEvent(event) # 显示主页面 self.main_window.show()

源码下载

采用416*416的一个输入,使得对小脸检测效果不是很好。训练数据也是重点,肯定是需求更多的训练数据让模型更加稳定。

源码下载:http://dt2.8tupian.net/2/28880a9b9990.pg3

如果对你有用的话,可以打赏哦
打赏
ali pay
wechat pay

本文作者:Dong

本文链接:

版权声明:本博客所有文章除特别声明外,均采用 CC BY-NC。本作品采用《知识共享署名-非商业性使用 4.0 国际许可协议》进行许可。您可以在非商业用途下自由转载和修改,但必须注明出处并提供原作者链接。 许可协议。转载请注明出处!