From 0ed9a0db0ddf7198b6dc69b369ca7b445f09f37c Mon Sep 17 00:00:00 2001 From: Wang_Run_Ze Date: Fri, 27 Jun 2025 10:48:48 +0800 Subject: [PATCH] =?UTF-8?q?=E4=B8=8A=E4=BC=A0=E6=96=87=E4=BB=B6=E8=87=B3?= =?UTF-8?q?=20/?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- install.bat | 84 ++++++++++++++++++++++++++ requirements.txt | 33 ++++++++++ run_detection.py | 143 ++++++++++++++++++++++++++++++++++++++++++++ start_detection.bat | 29 +++++++++ start_web_app.bat | 26 ++++++++ 5 files changed, 315 insertions(+) create mode 100644 install.bat create mode 100644 requirements.txt create mode 100644 run_detection.py create mode 100644 start_detection.bat create mode 100644 start_web_app.bat diff --git a/install.bat b/install.bat new file mode 100644 index 0000000..83b4416 --- /dev/null +++ b/install.bat @@ -0,0 +1,84 @@ +@echo off +chcp 65001 >nul +cd /d "%~dp0" + +echo ======================================== +echo 道路损伤检测系统 - 环境安装脚本 +echo ======================================== +echo. + +echo 正在检查Python环境... +python --version >nul 2>&1 +if errorlevel 1 ( + echo 错误: 未找到Python环境 + echo 请先安装Python 3.8或更高版本 + echo 下载地址: https://www.python.org/downloads/ + pause + exit /b 1 +) + +echo ✓ Python环境检查通过 +python --version +echo. + +echo 正在检查pip... +pip --version >nul 2>&1 +if errorlevel 1 ( + echo 错误: pip未找到 + echo 请重新安装Python并确保包含pip + pause + exit /b 1 +) + +echo ✓ pip检查通过 +echo. + +echo 正在升级pip... +python -m pip install --upgrade pip +echo. + +echo 正在安装项目依赖... +echo 这可能需要几分钟时间,请耐心等待... +echo. + +pip install -r requirements.txt + +if errorlevel 1 ( + echo. + echo 安装过程中出现错误,尝试使用国内镜像源... + echo. + pip install -r requirements.txt -i https://pypi.tuna.tsinghua.edu.cn/simple/ +) + +echo. +echo 正在创建必要的文件夹... +if not exist "input_videos" mkdir "input_videos" +if not exist "output_frames" mkdir "output_frames" +if not exist "logs" mkdir "logs" + +echo ✓ 文件夹创建完成 +echo. + +echo 正在测试安装... +python -c "import cv2, numpy, ultralytics; print('✓ 所有依赖库安装成功')" + +if errorlevel 1 ( + echo ✗ 依赖库测试失败 + echo 请检查安装过程中的错误信息 + pause + exit /b 1 +) + +echo. +echo ======================================== +echo 安装完成! +echo ======================================== +echo. +echo 使用说明: +echo 1. 将视频文件放入 input_videos 文件夹 +echo 2. 双击 start_detection.bat 开始检测 +echo 3. 或者运行: python run_detection.py +echo. +echo 详细说明请查看 README.md 文件 +echo. +pause \ No newline at end of file diff --git a/requirements.txt b/requirements.txt new file mode 100644 index 0000000..293182c --- /dev/null +++ b/requirements.txt @@ -0,0 +1,33 @@ +# 视频检测系统依赖包 + +# 核心依赖 +ultralytics>=8.0.0 +opencv-python>=4.5.0 +numpy>=1.21.0 +Pillow>=8.0.0 + +# 数据处理 +pandas>=1.3.0 + +# 进度显示 +tqdm>=4.62.0 + +# 配置文件处理 +PyYAML>=6.0 + +# 图像处理增强 +scipy>=1.7.0 +matplotlib>=3.4.0 + +# GPU支持 (可选) +# torch>=1.9.0 +# torchvision>=0.10.0 + +# 系统工具 +psutil>=5.8.0 + +# Web应用框架 +flask>=2.0.0 +werkzeug>=2.0.0 +flask-wtf>=1.0.0 +python-dotenv>=0.15.0 \ No newline at end of file diff --git a/run_detection.py b/run_detection.py new file mode 100644 index 0000000..8fb7826 --- /dev/null +++ b/run_detection.py @@ -0,0 +1,143 @@ +#!/usr/bin/env python3 +# -*- coding: utf-8 -*- +""" +视频检测系统启动脚本 +简化的用户界面,方便快速开始检测 +""" + +import os +import sys +from pathlib import Path +from batch_detector import BatchVideoDetector +from config import config + +def check_requirements(): + """检查运行环境""" + try: + import cv2 + import numpy as np + from ultralytics import YOLO + print("✓ 所有依赖库已安装") + return True + except ImportError as e: + print(f"✗ 缺少依赖库: {e}") + print("请运行: pip install ultralytics opencv-python") + return False + +def check_model(): + """检查模型文件""" + model_path = config.get_model_path() + if Path(model_path).exists(): + print(f"✓ 模型文件存在: {model_path}") + return True + else: + print(f"✗ 模型文件不存在: {model_path}") + print("请检查模型路径配置") + return False + +def setup_folders(): + """设置文件夹结构""" + config.create_folders() + + input_folder = Path(config.INPUT_FOLDER) + output_folder = Path(config.OUTPUT_FOLDER) + + print(f"✓ 输入文件夹: {input_folder.absolute()}") + print(f"✓ 输出文件夹: {output_folder.absolute()}") + + if not any(input_folder.iterdir()) if input_folder.exists() else True: + print(f"⚠ 输入文件夹为空,请将视频文件放入: {input_folder.absolute()}") + return False + + return True + +def get_user_settings(): + """获取用户设置""" + print("\n=== 检测参数设置 ===") + + # 置信度设置 + while True: + try: + confidence_input = input(f"请输入置信度阈值 (0.1-0.9, 默认 {config.CONFIDENCE_THRESHOLD}): ").strip() + if not confidence_input: + confidence = config.CONFIDENCE_THRESHOLD + break + confidence = float(confidence_input) + if 0.1 <= confidence <= 0.9: + break + else: + print("置信度必须在 0.1 到 0.9 之间") + except ValueError: + print("请输入有效的数字") + + # 输入文件夹 + input_folder = input(f"输入视频文件夹 (默认 '{config.INPUT_FOLDER}'): ").strip() + if not input_folder: + input_folder = config.INPUT_FOLDER + + # 输出文件夹 + output_folder = input(f"输出图片文件夹 (默认 '{config.OUTPUT_FOLDER}'): ").strip() + if not output_folder: + output_folder = config.OUTPUT_FOLDER + + return confidence, input_folder, output_folder + +def main(): + """主函数""" + print("=" * 60) + print(" 道路损伤检测系统 - 视频批量处理") + print("=" * 60) + + # 检查运行环境 + print("\n1. 检查运行环境...") + if not check_requirements(): + return + + if not check_model(): + return + + # 设置文件夹 + print("\n2. 设置文件夹...") + if not setup_folders(): + input("\n请添加视频文件后重新运行程序。按回车键退出...") + return + + # 获取用户设置 + confidence, input_folder, output_folder = get_user_settings() + + # 确认设置 + print("\n=== 检测设置确认 ===") + print(f"模型文件: {config.get_model_path()}") + print(f"置信度阈值: {confidence}") + print(f"输入文件夹: {Path(input_folder).absolute()}") + print(f"输出文件夹: {Path(output_folder).absolute()}") + print(f"检测类别: {list(config.CLASS_NAMES_CN.values())}") + + confirm = input("\n确认开始检测? (y/n): ").strip().lower() + if confirm not in ['y', 'yes', '是', '确认']: + print("检测已取消") + return + + # 开始检测 + print("\n=== 开始批量检测 ===") + try: + detector = BatchVideoDetector( + model_path=config.get_model_path(), + confidence=confidence + ) + + detector.process_all_videos(input_folder, output_folder) + + print("\n检测完成! 请查看输出文件夹中的结果。") + + except KeyboardInterrupt: + print("\n检测被用户中断") + except Exception as e: + print(f"\n检测过程中出现错误: {e}") + import traceback + traceback.print_exc() + + input("\n按回车键退出...") + +if __name__ == '__main__': + main() \ No newline at end of file diff --git a/start_detection.bat b/start_detection.bat new file mode 100644 index 0000000..561ee3d --- /dev/null +++ b/start_detection.bat @@ -0,0 +1,29 @@ +@echo off +chcp 65001 >nul +cd /d "%~dp0" + +echo ======================================== +echo 道路损伤检测系统 - 快速启动 +echo ======================================== +echo. + +echo 正在检查Python环境... +python --version >nul 2>&1 +if errorlevel 1 ( + echo 错误: 未找到Python环境 + echo 请先安装Python 3.8或更高版本 + pause + exit /b 1 +) + +echo Python环境检查通过 +echo. + +echo 正在启动检测系统... +echo. + +python run_detection.py + +echo. +echo 程序已结束 +pause \ No newline at end of file diff --git a/start_web_app.bat b/start_web_app.bat new file mode 100644 index 0000000..612339b --- /dev/null +++ b/start_web_app.bat @@ -0,0 +1,26 @@ +@echo off +echo =================================== +echo 道路损伤视频检测系统 - Web界面 +echo =================================== +echo. + +REM 检查Python环境 +python --version >nul 2>&1 +if %ERRORLEVEL% NEQ 0 ( + echo [错误] 未检测到Python环境,请安装Python 3.8或更高版本。 + goto :end +) + +REM 检查依赖包 +echo [信息] 检查依赖包... +pip install -r requirements.txt + +echo. +echo [信息] 启动Web应用... +echo [信息] 请在浏览器中访问: http://localhost:5000 +echo. + +python app.py + +:end +pause \ No newline at end of file