智能变电巡检:AI检测新突破

变电智能巡视目标检测平台

人物识别

调阈值


视频识别


文件夹推理

目录结构设计

text 复制代码
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

python 复制代码
"""
配置文件 - 定义常量、路径和默认配置
"""

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

python 复制代码
"""
样式文件 - 定义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

  • 控制台输出示例
text 复制代码
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 - ============================================================

代码后续开源!!!!

相关推荐
这张生成的图像能检测吗9 小时前
(论文速读)EfficientTrain++: 高效视觉骨干训练的通用课程学习
人工智能·深度学习·计算机视觉·训练方法
晚霞的不甘10 小时前
CANN:华为全栈AI计算框架的深度解析(终极扩展版 · 完整篇)
人工智能·华为
lisw0512 小时前
6G频段与5G频段有何不同?
人工智能·机器学习
2501_9416233214 小时前
人工智能赋能智慧农业互联网应用:智能种植、农业数据分析与产量优化实践探索》
大数据·人工智能
不爱吃糖的程序媛14 小时前
华为 CANN:昇腾 AI 的异构计算架构核心与开源生态解析
人工智能·华为·架构
AKAMAI14 小时前
从客户端自适应码率流媒体迁移到服务端自适应码率流媒体
人工智能·云计算
jinxinyuuuus14 小时前
GTA 风格 AI 生成器:跨IP融合中的“视觉语义冲突”与风格适配损失
人工智能·网络协议
如何原谅奋力过但无声14 小时前
TensorFlow 1.x常用函数总结(持续更新)
人工智能·python·tensorflow
翔云 OCR API14 小时前
人脸识别API开发者对接代码示例
开发语言·人工智能·python·计算机视觉·ocr