# cv_project **Repository Path**: yeti1/cv_project ## Basic Information - **Project Name**: cv_project - **Description**: 计算机视觉项目,使用ultralytics、pandas等库实现目标检测和分析功能 - **Primary Language**: Unknown - **License**: Not specified - **Default Branch**: master - **Homepage**: None - **GVP Project**: No ## Statistics - **Stars**: 0 - **Forks**: 0 - **Created**: 2025-10-14 - **Last Updated**: 2025-10-14 ## Categories & Tags **Categories**: Uncategorized **Tags**: None ## README # 视频智能分析系统 基于OpenCV、YOLO和AI大模型的视频智能分析全链路解决方案,实现从"能看"到"能懂"的视觉AI系统。本项目提供了模块化、可扩展的架构设计,支持多种业务场景的智能分析应用,并新增了HLS流发布功能。 ## 系统流程图 下面是系统的整体工作流程: ```mermaid flowchart TD subgraph "输入层" A1[单张图片] A2[摄像头视频流] A3[批量图片] end subgraph "核心处理层" B1[图像预处理模块 image_processor.py] B2[目标检测模块 object_detector.py] B3[语义分析模块 semantic_analyzer.py] B4[可视化模块 visualizer.py] B5[业务应用模块 business_applications.py] end subgraph "输出与发布层" C1[本地可视化展示] C2[结果保存到本地] C3[HLS流发布功能 hls_streamer.py] end subgraph "配置与控制" D1[系统配置 config_manager.py] D2[用户交互控制] end %% 输入到预处理的连接 A1 --> B1 A2 --> B1 A3 --> B1 %% 核心处理层内部连接 B1 --> B2 B2 --> B3 B3 --> B4 B4 --> B5 %% 处理层到输出层的连接 B5 --> C1 B5 --> C2 B5 --> C3 %% 配置与控制的连接 D1 -.-> B1 D1 -.-> B2 D1 -.-> B3 D1 -.-> B4 D1 -.-> B5 D1 -.-> C3 D2 --> C3 D2 -- 选择应用类型 --> B5 D2 -- 控制HLS流 --> C3 D2 -- 退出/保存 --> C1 %% HLS流的特殊连接 C3 --> C1 ``` ## 项目架构 本项目采用模块化设计,实现了完整的视频智能分析链路: ```mermaid flowchart LR A[图像预处理模块] --> B[目标检测模块] B --> C[语义分析模块] C --> D[可视化模块] D --> E[业务应用模块] ``` 每个模块独立实现,职责明确,便于维护和扩展: 1. **图像预处理模块 (`image_processor.py`)** - 负责图像/视频帧的获取、预处理和增强 2. **目标检测模块 (`object_detector.py`)** - 基于YOLO模型实现高效的目标检测和跟踪 3. **语义分析模块 (`semantic_analyzer.py`)** - 实现场景分析、语义理解和异常检测 4. **可视化模块 (`visualizer.py`)** - 提供专业的检测结果可视化、保存和分析功能 5. **业务应用模块 (`business_applications.py`)** - 提供多种业务场景的专用分析功能 6. **系统集成模块 (`system.py`)** - 整合各功能模块,提供统一的接口 ## 目录结构 ``` e:\code\cv/ ├── .gitignore # Git忽略配置 ├── .python-version # Python版本配置 ├── .venv/ # 虚拟环境 ├── README.md # 项目说明文档 ├── app.py # 主程序入口 ├── config/ │ └── text_mappings.json # 文本映射配置 ├── main.py # 主入口脚本 ├── outputs/ # 输出结果目录 ├── pyproject.toml # 项目配置文件 ├── requirements.txt # 项目依赖 ├── src/ # 源代码目录 │ ├── __init__.py # 包初始化文件 │ ├── business_applications.py # 业务应用模块 │ ├── config_manager.py # 配置管理模块 │ ├── image_processor.py # 图像预处理模块 │ ├── object_detector.py # 目标检测模块 │ ├── semantic_analyzer.py # 语义分析模块 │ ├── system.py # 系统集成模块 │ ├── visualizer.py # 可视化模块 │ └── hls_streamer.py # HLS流发布模块 ├── test/ # 测试目录 │ ├── test_config_mapping.py │ ├── test_emoji_removal.py │ ├── test_font_refactor.py │ ├── test_redundancy_fix.py │ └── test_system.py ├── uv.lock # 依赖锁文件 └── hls_stream_test.py # HLS流测试脚本 └── HLS_STREAM_GUIDE.md # HLS流使用指南 ``` ## 功能特点 - **模块化设计**:清晰的功能划分,便于维护和扩展 - **多种输入方式**:支持单张图片、摄像头视频流和批量图片处理 - **专业图像预处理**:提供亮度/对比度调整、去噪、运动检测等功能 - **高效目标检测**:集成YOLOv8模型,实现实时目标检测和跟踪 - **智能语义理解**:提供场景分析、物体计数和异常行为检测 - **丰富可视化效果**:支持边界框标注、标签显示、热力图等多种可视化方式 - **多业务场景支持**:内置安防监控、交通监控和工业质检等应用场景 - **灵活扩展机制**:支持自定义业务应用和功能模块扩展 - **HLS流发布**:支持将处理后的视频流通过HLS协议发布到网络,便于远程观看 - **中英文显示**:支持中英文界面切换,解决显示乱码问题 ## 环境配置 本项目使用 [uv](https://github.com/astral-sh/uv) 作为Python包管理器,uv是一个高性能的Python包管理器和运行器。 ### 安装uv 首先需要安装uv: ```bash # 在Windows上安装 powershell -c "iwr https://astral.sh/uv/install.ps1 -useb | iex" # 在Linux/macOS上安装 curl -LsSf https://astral.sh/uv/install.sh | sh ``` ### 使用uv安装依赖 ```bash uv add -r requirements.txt ``` ### 主要依赖说明 - `ultralytics`: YOLO模型的官方实现 - `pandas`: 数据处理 - `matplotlib`: 结果展示和图表绘制 - `pillow`: 图像处理 - `requests`: API请求 - `supervision`: 高效的计算机视觉工具库,用于结果可视化 - `opencv-python>=4.5.0`: 图像处理和视频流处理 - `numpy>=1.19.0`: 数值计算支持 ### 外部依赖 - **FFmpeg**: 用于HLS流发布功能,需要单独安装 ## 使用方法 ### 运行主程序 使用uv运行主程序: ```bash uv run app.py ``` 运行后,程序会提供交互式界面,引导用户选择应用类型和处理模式: 1. **选择应用类型**: - 通用应用 - 安防监控应用 - 交通监控应用 - 工业质检应用 2. **选择处理模式**: - 处理摄像头视频流 - 处理单张图片 - 批量处理文件夹中的图片 ### 视频流处理 选择处理摄像头视频流后,程序会启动摄像头,实时显示分析结果。 - 按`q`键退出视频处理 - 按`s`键切换应用类型 - 按`h`键开启/关闭HLS流发布功能 - 按`w`键切换窗口大小模式 ### 图片处理 选择处理单张图片后,输入图片路径进行分析。 - 如果未找到指定图片,程序会尝试使用示例图片 - 分析结果会显示在新窗口中,并保存到`results`目录 ### 批量处理 选择批量处理文件夹中的图片后,输入文件夹路径。 - 程序会自动处理文件夹中所有支持的图片格式 - 所有结果会保存到`results`目录 ## HLS流发布功能 本系统新增了HLS(HTTP Live Streaming)流发布功能,允许将处理后的视频流通过HTTP协议发布到网络,支持多设备、多平台的远程观看。 ### 使用方法 #### 1. 通过主程序使用 运行主程序后,在视频流处理模式下: - 按`h`键开启或关闭HLS流发布 - 开启后,流文件会保存在`hls_streams`目录下 - 通过浏览器或支持HLS的播放器访问`hls_streams/stream.m3u8`即可观看 #### 2. 独立测试脚本 使用专门的HLS流测试脚本进行快速测试: ```bash uv run hls_stream_test.py ``` 脚本会引导用户选择视频源和配置选项。 ### 配置选项 HLS流功能支持以下配置: - 视频分辨率调整 - 帧率设置 - 编码参数优化 - 流目录自定义 详细配置请参考`HLS_STREAM_GUIDE.md`文件。 ### 系统要求 - **FFmpeg**: 必须安装在系统中并添加到环境变量 - **网络环境**: 确保客户端设备能够访问HLS流文件 ## 功能模块说明 ### 1. 图像预处理模块 (`image_processor.py`) - **图像读取与格式转换**:支持多种格式的图像读取和色彩空间转换 - **图像增强**:提供直方图均衡化、亮度/对比度调整等增强功能 - **图像去噪**:支持高斯滤波、中值滤波等多种去噪算法 - **图像缩放**:自动调整图像大小以平衡处理速度和精度 - **运动检测**:实现简单的帧间差异运动检测 ### 2. 目标检测模块 (`object_detector.py`) - **目标检测**:基于YOLOv8模型实现高效的目标检测 - **目标跟踪**:使用ByteTrack算法实现多目标跟踪 - **类别过滤**:支持按类别筛选检测结果 - **目标计数**:提供各类别目标数量统计功能 - **标签生成**:自动生成包含类别、置信度和ID的目标标签 ### 3. 语义分析模块 (`semantic_analyzer.py`) - **场景分析**:分析图像中的目标分布,生成场景描述 - **物体计数**:统计各类别物体的数量和分布 - **场景类型推断**:根据目标特征推断场景类型 - **简单推理**:基于场景特征进行简单的逻辑推理 - **异常检测**:检测场景中的异常情况和行为 ### 4. 可视化模块 (`visualizer.py`) - **边界框绘制**:绘制目标边界框和类别标签 - **场景描述**:在图像上添加场景分析结果 - **时间戳**:添加当前时间信息 - **结果保存**:保存分析结果到本地文件 - **对比显示**:支持原始图像和分析结果的对比显示 - **热力图生成**:生成目标分布热力图 ### 5. 业务应用模块 (`business_applications.py`) - **安防监控**:检测人员聚集、异常停留等行为 - **交通监控**:分析交通流量、车辆类型和拥堵情况 - **工业质检**:检测生产线上的产品缺陷和异常 - **通用应用**:适用于大多数场景的通用分析功能 ## 结果说明 ### 可视化内容 - 目标边界框和类别标签 - 目标ID(用于跟踪) - 置信度 - 场景分析描述 - 时间戳 - 热力图(可选) ### 保存的结果 分析结果会以图片形式保存到`results`目录,文件名包含时间戳和处理类型。 ## 应用场景 本系统可应用于以下场景: - **安防监控**:实时检测人员、车辆和异常行为,适用于商场、车站等公共场所 - **交通监控**:分析交通流量、车辆类型和拥堵情况,适用于道路、停车场等场景 - **工业质检**:检测生产线上的产品缺陷和异常,提高生产质量 - **人流分析**:统计公共场所的人员密度和流动情况,适用于大型活动、景区等 - **零售分析**:分析顾客行为和商品陈列效果,优化零售体验 ## 测试验证 运行测试脚本验证系统功能: ```bash python test_system.py ``` 测试脚本会自动测试各个模块的功能,并生成测试报告。 ## 扩展建议 1. **集成更强大的AI模型**:接入GPT等大模型实现更复杂的语义理解 2. **自定义模型训练**:添加特定场景的目标检测模型训练功能 3. **云端部署**:实现云端部署和远程监控功能 4. **告警机制**:添加异常情况的自动告警和通知功能 5. **多摄像头支持**:扩展支持多摄像头协同分析 6. **数据库集成**:添加结果数据的存储和查询功能 ## 注意事项 - 首次运行时会自动下载YOLO模型文件,可能需要一些时间和网络流量 - 视频处理时,为了提高性能,程序会按一定间隔跳帧处理 - 如需处理高分辨率视频,可能需要调整预处理参数以平衡速度和精度 - 不同业务应用场景可能需要调整模型参数以获得最佳效果 - 运行过程中如遇到内存不足问题,可尝试降低视频分辨率或处理帧率