Skip to content

Navigation Menu

Sign in
Appearance settings

Search code, repositories, users, issues, pull requests...

Provide feedback

We read every piece of feedback, and take your input very seriously.

Saved searches

Use saved searches to filter your results more quickly

Appearance settings

zhangleino1/vision_describe

Open more actions menu

Folders and files

NameName
Last commit message
Last commit date

Latest commit

 

History

7 Commits
7 Commits
 
 
 
 
 
 
 
 
 
 
 
 

Repository files navigation

🎥 智能视频识别系统

Python FastAPI License

这是一个基于FastAPI的智能视频识别系统,集成了Ollama大模型,能够实时处理RTSP视频流并提供AI驱动的内容识别功能。系统采用现代化的Web界面设计,支持多终端访问,为视频监控和内容分析提供了强大的解决方案。

找到我

关注公众号,程序员石磊

联系我

✨ 核心特性

� 核心功能

  • 实时视频流处理:支持RTSP协议视频流的实时捕获和展示
  • AI智能识别:集成Ollama Qwen2.5-VL大模型,提供精准的图像内容识别
  • 实时通信:基于WebSocket的实时数据推送,零延迟获取识别结果
  • 历史记录:智能存储和管理识别历史,支持数据回溯

🖥️ 用户界面

  • 响应式设计:完美适配桌面端和移动端设备
  • 现代化UI:采用毛玻璃效果和渐变设计,提供优雅的视觉体验
  • 实时状态显示:连接状态指示器,实时监控系统运行状态
  • Markdown渲染:支持富文本格式的识别结果展示

⚡ 性能特点

  • 异步处理:基于asyncio和ThreadPoolExecutor的高并发架构
  • 智能跳帧:可配置的帧处理策略,优化系统资源使用
  • 队列管理:缓冲队列机制,确保视频流的稳定性
  • 自动重连:网络异常时自动重连RTSP流,保证服务稳定性

📸 系统截图

视频效果: bilibili

效果图

主界面

  • 左侧:实时视频流展示区域,支持全屏查看
  • 右侧:AI识别结果展示区域,支持Markdown格式渲染
  • 顶部:系统状态栏,显示连接状态和系统信息

功能特点

  • 实时视频流畅播放,支持多种分辨率自适应
  • 识别结果按时间倒序排列,便于查看最新内容
  • 支持移动端触控操作,响应式布局优化

🛠️ 技术架构

后端技术栈

  • Web框架:FastAPI - 高性能异步Web框架
  • 视频处理:OpenCV - 专业级视频处理库
  • AI模型:Ollama + Qwen2.5-VL - 多模态大语言模型
  • 实时通信:WebSocket - 双向实时数据传输
  • 异步处理:asyncio + ThreadPoolExecutor - 高并发处理

前端技术栈

  • 基础技术:HTML5 + CSS3 + JavaScript
  • UI设计:现代化毛玻璃效果,渐变背景
  • 响应式布局:支持移动端和桌面端适配
  • Markdown渲染:marked.js + highlight.js

系统架构图

┌─────────────────┐    ┌─────────────────┐    ┌─────────────────┐
│   RTSP摄像头    │───▶│   视频处理模块   │───▶│   AI识别模块    │
└─────────────────┘    └─────────────────┘    └─────────────────┘
                                │                       │
                                ▼                       ▼
┌─────────────────┐    ┌─────────────────┐    ┌─────────────────┐
│   Web界面展示   │◀───│   WebSocket     │◀───│   结果处理模块   │
└─────────────────┘    └─────────────────┘    └─────────────────┘

🚀 快速开始

📋 环境要求

  • Python版本:3.8 或更高版本
  • 操作系统:Windows / Linux / macOS
  • 内存要求:建议8GB以上(运行大模型需要)
  • 网络要求:支持RTSP协议的网络摄像头或视频源

🔧 安装步骤

1. 克隆项目

git clone <repository-url>
cd vision_describe

2. 创建虚拟环境(推荐)

# Windows
python -m venv venv
venv\Scripts\activate

# Linux/macOS
python3 -m venv venv
source venv/bin/activate

3. 安装Python依赖

pip install -r requirements.txt

4. 安装和配置Ollama

安装Ollama:

# Windows
# 下载安装包:https://ollama.ai/download

# Linux
curl -fsSL https://ollama.ai/install.sh | sh

# macOS
brew install ollama

启动Ollama服务:

ollama serve

下载所需模型:

# 下载Qwen2.5-VL模型(约4.5GB)
ollama pull qwen2.5vl:7b

5. 配置RTSP视频源

main.py文件中修改RTSP地址为您的摄像头地址:

# 第21行附近
rtsp_url = "rtsp://用户名:密码@IP地址:端口/路径"

# 示例:
rtsp_url = "rtsp://admin:123456@192.168.1.100:554/h264/ch1/main/av_stream"

6. 启动应用

方式一:直接运行

python main.py

方式二:使用uvicorn(推荐生产环境)

uvicorn main:app --host 0.0.0.0 --port 8000 --reload

7. 访问应用

打开浏览器访问:

📁 项目结构

vision_describe/
├── 📄 main.py                 # FastAPI主应用程序
├── 📄 version_llm.py          # 基于tkinter的桌面版本(原型)
├── 📄 requirements.txt        # Python依赖包列表
├── 📄 README.md              # 项目说明文档
├── 📁 templates/             # Jinja2模板文件夹
│   └── 📄 index.html         # 主页面模板
└── 📁 static/                # 静态资源文件夹
    ├── 📄 style.css          # 主样式文件
    ├── 📁 css/               # CSS样式文件夹
    │   └── 📄 markdown.css   # Markdown渲染样式
    └── 📁 js/                # JavaScript文件夹
        └── 📄 markdown-utils.js # Markdown工具函数

📝 关键文件说明

文件 说明
main.py 核心应用程序,包含FastAPI路由、WebSocket处理、视频流处理等
version_llm.py 原始桌面版本,基于tkinter和OpenCV的简单实现
templates/index.html Web界面模板,包含响应式布局和实时通信逻辑
static/ 静态资源目录,包含CSS样式和JavaScript脚本

⚙️ 配置参数

系统参数配置

您可以在main.py中调整以下关键参数:

# 视频处理参数
frame_skip = 10                    # 跳帧参数,控制处理频率
frame_queue = queue.Queue(maxsize=10)  # 视频帧队列大小

# 识别参数
recognition_frequency = 30         # 每30帧进行一次AI识别
max_recognition_results = 50       # 最大历史记录数量

# 服务器参数
host = "0.0.0.0"                  # 服务器监听地址
port = 8000                       # 服务器端口

RTSP配置示例

# 海康威视摄像头
rtsp_url = "rtsp://admin:password@192.168.1.100:554/h264/ch1/main/av_stream"

# 大华摄像头
rtsp_url = "rtsp://admin:password@192.168.1.100:554/cam/realmonitor?channel=1&subtype=0"

# 通用RTSP流
rtsp_url = "rtsp://username:password@ip:port/path"

🎯 使用指南

🖥️ Web界面操作

  1. 视频区域(左侧)

    • 实时显示RTSP视频流
    • 支持全屏查看模式
    • 自动适应窗口大小
  2. 识别结果区域(右侧)

    • 显示AI识别的图像内容描述
    • 按时间倒序排列,最新结果在顶部
    • 支持Markdown格式渲染
    • 自动滚动显示新结果
  3. 状态指示器(顶部)

    • 绿色:系统正常运行
    • 红色:连接异常或系统错误
    • 黄色:正在重连或处理中

📱 移动端支持

  • 响应式布局:自动适配手机和平板屏幕
  • 触控优化:支持滑动查看历史记录
  • 性能优化:针对移动设备优化视频播放

🔧 高级配置

性能优化建议

  1. 硬件要求

    CPU: 4核心以上(推荐8核心)
    内存: 8GB以上(推荐16GB)
    GPU: 可选,但建议使用NVIDIA GPU加速大模型推理
    网络: 千兆以太网,低延迟
    
  2. 系统优化参数

    # 针对高分辨率视频流
    frame_skip = 15  # 增加跳帧数,降低CPU占用
    
    # 针对低性能设备
    frame_queue_size = 5  # 减少队列大小,降低内存占用
    
    # 针对网络不稳定环境
    reconnect_interval = 3  # 设置重连间隔

Docker部署(可选)

创建Dockerfile

FROM python:3.9-slim

WORKDIR /app
COPY requirements.txt .
RUN pip install -r requirements.txt

COPY . .
EXPOSE 8000

CMD ["python", "main.py"]

构建和运行:

docker build -t vision-describe .
docker run -p 8000:8000 vision-describe

🐛 常见问题解决

问题1:无法连接RTSP流

解决方案:

  • 检查RTSP URL格式是否正确
  • 确认摄像头网络连接正常
  • 验证用户名和密码
  • 检查防火墙设置

问题2:AI识别响应慢

解决方案:

  • 增加frame_skip参数值
  • 减少识别频率(调整识别间隔)
  • 确保Ollama服务正常运行
  • 考虑使用GPU加速

问题3:Web界面无法访问

解决方案:

  • 检查端口8000是否被占用
  • 确认防火墙允许8000端口
  • 尝试使用不同的端口号

问题4:视频画面卡顿

解决方案:

  • 调整视频分辨率设置
  • 增加帧队列大小
  • 检查网络带宽是否充足

问题5:家用萤石摄像头如何开启rtsp

萤石

其他品牌的网上搜一下吧!

🤝 开发贡献

贡献指南

  1. Fork项目
  2. 创建特性分支 (git checkout -b feature/AmazingFeature)
  3. 提交更改 (git commit -m 'Add some AmazingFeature')
  4. 推送到分支 (git push origin feature/AmazingFeature)
  5. 创建Pull Request

开发环境设置

# 安装开发依赖
pip install -r requirements.txt
pip install pytest black flake8

# 运行测试
pytest tests/

# 代码格式化
black main.py
flake8 main.py

📄 许可证

本项目采用MIT许可证 - 查看 LICENSE 文件了解详情。

📞 技术支持

  • 问题反馈:请在GitHub Issues中提交
  • 功能建议:欢迎提交Feature Request
  • 技术交流:欢迎Star⭐和Fork🍴

🔮 未来规划

  • 支持多路视频流同时处理
  • 添加用户认证和权限管理
  • 集成更多AI模型选择
  • 支持视频录制和回放功能
  • 添加报警和通知功能
  • 支持云端存储集成
  • 移动端APP开发

🌟 如果这个项目对您有帮助,请给它一个Star! 🌟

📧 有任何问题或建议,随时联系我们

About

这是一个基于FastAPI的智能视频识别系统,集成了Ollama大模型,能够实时处理RTSP视频流并提供AI驱动的内容识别功能。系统采用现代化的Web界面设计,支持多终端访问,为视频监控和内容分析提供了强大的解决方案。

Resources

Stars

Watchers

Forks

Releases

Packages

Contributors

Languages

Morty Proxy This is a proxified and sanitized view of the page, visit original site.