一个基于 Flask + OpenCV + NumPy 的轻量级图像特征提取与算力调度系统,专为车行视频流场景设计。通过极速特征提取(<2ms/帧)+ 价值评估,智能决策图像应该由本地算力处理还是卸载到云端,从而在成本、延迟、精度之间取得最优平衡。
- 极速特征提取:缩略图标准化(128x128),单帧处理耗时 < 2ms
- 7维特征向量:香农熵、全局边缘占比、亮度、局部峰值边缘、局部离散度、下半区优势比、帧间运动幅度
- 价值评估系统:基于可配置权重的软性评分,支持亮度惩罚和风险事件硬规则
- 可视化诊断界面:Web 前端上传图片,实时展示特征值进度条、调度决策(CLOUD / LOCAL / DROP)、边缘标注图
- 一键打包 EXE:双击运行,自动打开浏览器,无需命令行
- 一键 Git 提交:配套
auto_git_push.exe,开发后双击即可自动 commit & push
- 从 Releases 下载
app.exe - 双击运行,浏览器自动打开
http://127.0.0.1:5000 - 上传图片,立即看到特征分析和调度决策
# 1. 克隆仓库
git clone https://github.com/fanqin314/image.git
cd image
# 2. 安装依赖
pip install -r requirements.txt
# 3. 运行
python app.py
# 4. 浏览器访问 http://127.0.0.1:5000| 特征 | 取值范围 | 物理意义 |
|---|---|---|
| 香农熵 | 0 ~ 8 | 灰度分布随机性,筛除纯色/单调背景 |
| 全局边缘占比 | 0 ~ 1 | 有效边缘像素比例,衡量画面内容丰富度 |
| 亮度 | 0 ~ 1 | 平均亮度,用于过曝/欠曝惩罚 |
| 局部峰值边缘 | 0 ~ 1 | 32x32滑动窗口中最高边缘密度,捕捉局部关键物体 |
| 局部离散度 | 0 ~ ∞ | 各窗口边缘密度方差,区分“疏密有致”vs“均匀噪点” |
| 下半区优势比 | 0 ~ ∞ | 下半区边缘/上半区边缘,车行场景下路面/车辆 vs 天空 |
| 帧间运动幅度 | 0 ~ 255 | 相邻帧像素差均值,检测急刹/变道等风险事件 |
所有阈值和权重都集中在 config.yaml 中,无需改代码即可调优:
value_evaluator:
weights:
global_edge: 0.25
local_peak: 0.30
local_variance: 0.15
lower_advantage: 0.20
motion: 0.10
brightness_penalty:
low: 0.15
high: 0.92
penalty: 0.3
scheduler:
score_high: 0.7 # 高于此值 → 云端
score_mid: 0.4 # 高于此值 → 本地,低于 → 丢弃
motion_risk_threshold: 40 # 运动幅度 > 此值 → 强制云端开发过程中修改代码后,双击 dist/auto_git_push.exe,自动执行:
git add .
git commit -m "自动提交 @ YYYY-MM-DD HH:MM:SS"
git push origin main
适合单人开发场景,省去重复敲命令的麻烦。
# 打包主程序
pyinstaller --onefile --noconsole --add-data "templates;templates" app.py
# 打包一键提交工具
pyinstaller --onefile --noconsole auto_git_push.pyimage/
├── app.py # Flask 主程序
├── config.yaml # 配置文件(权重、阈值)
├── feature_extractor.py # 7维特征提取器
├── value_evaluator.py # 价值评估系统
├── auto_git_push.py # 一键 Git 提交脚本
├── requirements.txt # Python 依赖列表
├── templates/
│ └── index.html # 可视化前端界面
├── dist/ # 打包后的 EXE 文件
└── build/ # 构建临时文件
- 接入真实视频流,支持连续帧运动感知
- 集成轻量级 ONNX 模型(本地推理)
- 接入云端 GPU 推理 API(HTTP 调用)
- 调度日志离线分析 & 阈值自动校准
- Docker 化部署
MIT License
Copyright (c) 2026 fanqin314
欢迎提 Issue 和 PR!如果你有好的想法或遇到问题,直接在 GitHub 上交流。
⭐ 如果这个项目对你有帮助,点个 Star 支持一下吧!