智能变电巡检:AI检测新突破
变电智能巡视目标检测平台
人物识别

调阈值


视频识别


文件夹推理

目录结构设计
power_detection_platform/
│
├── main.py # 程序入口
├── ui_main_window.py # 主窗口UI设计
├── detection_worker.py # 检测工作线程
├── yolo_detector.py # YOLO检测器封装
├── utils.py # 工具函数
├── config.py # 配置文件
├── styles.py # 样式文件
│
├── models/ # 模型文件目录
│ └── yolov13n.pt # 默认模型
├── assets/ # 资源文件
│ ├── logo.png # 默认logo
│ └── icons/ # 图标文件
├── logs/ # 日志目录
│ └── 20241217_143022.log # 时间戳命名的日志文件
├── results/ # 检测结果保存目录
└── temp/ # 临时文件目录
示例代码文件
1. config.py
"""
配置文件 - 定义常量、路径和默认配置
"""import os
from datetime import datetime# 项目根目录
BASE_DIR = os.path.dirname(os.path.abspath(__file__))# 颜色配置 - 国网绿色主题
COLORS = {"国网绿": "#1A8C3A","深国网绿": "#0D5A25","淡绿色": "#F0F9F0","白色": "#FFFFFF","边框绿": "#C8E6C9","文字灰": "#333333","浅灰": "#F5F5F5","按钮绿": "#1A8C3A","按钮悬停": "#146C2E","按钮按下": "#0D4D21"
}# 路径配置
PATHS = {"models": os.path.join(BASE_DIR, "models"),"assets": os.path.join(BASE_DIR, "assets"),"logs": os.path.join(BASE_DIR, "logs"),"results": os.path.join(BASE_DIR, "results"),"temp": os.path.join(BASE_DIR, "temp")
}# 默认配置
DEFAULT_CONFIG = {"model": "yolov13n.pt","confidence": 0.25,"iou": 0.45,"save_results": True
}# 创建必要的目录
for path in PATHS.values():os.makedirs(path, exist_ok=True)# 日志文件路径
LOG_FILE = os.path.join(PATHS["logs"], f"{datetime.now().strftime('%Y%m%d_%H%M%S')}.log")
2. styles.py
"""
样式文件 - 定义UI组件的样式
"""from config import COLORS# 主窗口样式
MAIN_STYLE = f"""
QMainWindow {{background-color: {COLORS['白色']};font-family: "Microsoft YaHei UI", "微软雅黑", sans-serif;font-size: 12px;
}}QWidget {{font-family: "Microsoft YaHei UI", "微软雅黑", sans-serif;font-size: 12px;
}}
"""# 标题样式
TITLE_STYLE = f"""
QLabel {{background-color: {COLORS['国网绿']};color: {COLORS['白色']};font-size: 20px;font-weight: bold;padding: 12px;text-align: center;font-family: "Microsoft YaHei UI", "微软雅黑", sans-serif;
}}
"""# 左侧面板样式
LEFT_PANEL_STYLE = f"""
QFrame {{background-color: {COLORS['淡绿色']};border: 1px solid {COLORS['边框绿']};border-radius: 6px;margin: 5px;padding: 8px;
}}
"""# 组框样式
GROUP_BOX_STYLE = f"""
QGroupBox {{background-color: {COLORS['淡绿色']};border: 1px solid {COLORS['边框绿']};border-radius: 5px;margin-top: 10px;padding-top: 12px;font-weight: bold;color: {COLORS['文字灰']};font-size: 12px;font-family: "Microsoft YaHei UI", "微软雅黑", sans-serif;
}}QGroupBox::title {{subcontrol-origin: margin;subcontrol-position: top center;padding: 0 6px;background-color: {COLORS['淡绿色']};
}}
"""# 按钮样式
BUTTON_STYLE = f"""
QPushButton {{background-color: {COLORS['按钮绿']};color: {COLORS['白色']};border: none;border-radius: 4px;padding: 6px 12px;font-weight: bold;font-size: 11px;font-family: "Microsoft YaHei UI", "微软雅黑", sans-serif;min-height: 28px;
}}QPushButton:hover {{background-color: {COLORS['按钮悬停']};
}}QPushButton:pressed {{background-color: {COLORS['按钮按下']};
}}QPushButton:disabled {{background-color: #CCCCCC;color: #999999;
}}
"""# 工具栏按钮样式
TOOLBAR_BUTTON_STYLE = f"""
QPushButton {{background-color: {COLORS['按钮绿']};color: {COLORS['白色']};border: none;border-radius: 4px;padding: 8px 12px;font-size: 11px;font-family: "Microsoft YaHei UI", "微软雅黑", sans-serif;min-height: 32px;
}}QPushButton:hover {{background-color: {COLORS['按钮悬停']};
}}QPushButton:pressed {{background-color: {COLORS['按钮按下']};
}}
"""# 控制按钮样式
CONTROL_BUTTON_STYLE = f"""
QPushButton {{background-color: {COLORS['按钮绿']};color: {COLORS['白色']};border: none;border-radius: 5px;padding: 10px 16px;font-weight: bold;font-size: 12px;font-family: "Microsoft YaHei UI", "微软雅黑", sans-serif;min-height: 36px;
}}QPushButton:hover {{background-color: {COLORS['按钮悬停']};
}}QPushButton:pressed {{background-color: {COLORS['按钮按下']};
}}QPushButton:disabled {{background-color: #CCCCCC;color: #999999;
}}
"""# 滑块样式
SLIDER_STYLE = f"""
QSlider::groove:horizontal {{border: 1px solid {COLORS['边框绿']};height: 6px;background: {COLORS['浅灰']};margin: 1px 0;border-radius: 3px;
}}QSlider::handle:horizontal {{background: qlineargradient(x1:0, y1:0, x2:1, y2:1, stop:0 {COLORS['国网绿']}, stop:1 {COLORS['深国网绿']});border: 1px solid {COLORS['深国网绿']};width: 16px;margin: -2px 0;border-radius: 8px;
}}
"""# 表格样式
TABLE_STYLE = f"""
QTableWidget {{border: 1px solid {COLORS['边框绿']};border-radius: 4px;gridline-color: {COLORS['边框绿']};background-color: {COLORS['白色']};font-family: "Microsoft YaHei UI", "微软雅黑", sans-serif;font-size: 10px;
}}QTableWidget::item {{padding: 4px;border-bottom: 1px solid {COLORS['边框绿']};font-family: "Microsoft YaHei UI", "微软雅黑", sans-serif;
}}QHeaderView::section {{background-color: {COLORS['国网绿']};color: {COLORS['白色']};padding: 6px;border: none;font-weight: bold;font-family: "Microsoft YaHei UI", "微软雅黑", sans-serif;font-size: 10px;
}}
"""# 标签样式
LABEL_STYLE = f"""
QLabel {{color: {COLORS['文字灰']};font-family: "Microsoft YaHei UI", "微软雅黑", sans-serif;font-size: 11px;
}}
"""# 状态栏样式
STATUS_STYLE = f"""
QStatusBar {{background-color: {COLORS['淡绿色']};color: {COLORS['文字灰']};border-top: 1px solid {COLORS['边框绿']};padding: 6px;font-family: "Microsoft YaHei UI", "微软雅黑", sans-serif;font-size: 10px;
}}
"""# 显示区域样式
DISPLAY_STYLE = f"""
QLabel {{border: 1px solid {COLORS['边框绿']};background-color: {COLORS['浅灰']};color: {COLORS['文字灰']};border-radius: 4px;font-family: "Microsoft YaHei UI", "微软雅黑", sans-serif;
}}
"""# 进度条样式
PROGRESS_STYLE = f"""
QProgressBar {{border: 1px solid {COLORS['边框绿']};border-radius: 5px;text-align: center;background-color: {COLORS['浅灰']};font-family: "Microsoft YaHei UI", "微软雅黑", sans-serif;
}}QProgressBar::chunk {{background-color: {COLORS['国网绿']};border-radius: 5px;
}}
"""
启动说明
- 环境要求
bash
pip install PyQt5 opencv-python numpy
- 启动命令
bash
python main.py
- 控制台输出示例
2024-12-17 14:30:22 - __main__ - INFO - 启动变电智能巡视目标检测平台...
2024-12-17 14:30:22 - __main__ - INFO - ============================================================
2024-12-17 14:30:22 - __main__ - INFO - 变电智能巡视目标检测平台启动成功
2024-12-17 14:30:22 - __main__ - INFO - 日志文件位置: /path/to/logs/20241217_143022.log
2024-12-17 14:30:22 - __main__ - INFO - 平台功能:
2024-12-17 14:30:22 - __main__ - INFO - - 支持图片、视频、摄像头、文件夹多种输入源
2024-12-17 14:30:22 - __main__ - INFO - - 可调节置信度和交并比参数
2024-12-17 14:30:22 - __main__ - INFO - - 实时显示检测结果和统计信息
2024-12-17 14:30:22 - __main__ - INFO - - 支持暂停、继续、停止检测操作
2024-12-17 14:30:22 - __main__ - INFO - ============================================================
代码后续开源!!!!
