feat: 视觉记录系统 v1.0.0 - 摄像头定时拍照+智能分析+Web界面

This commit is contained in:
2026-04-16 09:42:53 +08:00
commit 49785191c3
14 changed files with 1997 additions and 0 deletions

69
config.py Normal file
View File

@@ -0,0 +1,69 @@
"""
配置管理模块
"""
import os
from pathlib import Path
# 基础路径
BASE_DIR = Path(__file__).parent.absolute()
DATA_DIR = BASE_DIR / "data"
IMAGES_DIR = DATA_DIR / "images"
DB_PATH = DATA_DIR / "events.db"
# 确保目录存在
IMAGES_DIR.mkdir(parents=True, exist_ok=True)
# Web 服务配置
WEB_PORT = 19016
WEB_HOST = "0.0.0.0"
# 摄像头配置
CAMERA_INDEX = 0 # 默认摄像头
CAPTURE_INTERVAL = 60 # 拍照间隔(秒)
# 大模型配置(用于图片分析)
LLM_PROVIDER = "bailian" # bailian / openai / local
LLM_API_URL = os.environ.get("VISION_API_URL", "https://dashscope.aliyuncs.com/compatible-mode/v1")
LLM_API_KEY = os.environ.get("VISION_API_KEY", "sk-lm-fuP5tGU8:Hi7YU87jHyDP6Ay8Tl2j")
LLM_MODEL = os.environ.get("VISION_MODEL", "qwen-vl-plus") # 视觉模型
# 分析配置
ANALYSIS_PROMPT = """请分析这张图片,识别其中的重要事件或变化。
重点关注:
1. 人物活动(有人出现、离开、动作等)
2. 物体变化(物品移动、新增、消失等)
3. 环境变化(光线、天气、状态等)
4. 异常情况(潜在危险、异常行为等)
请用简洁的中文描述你观察到的事件,格式如下:
事件类型: [类型]
描述: [简短描述]
置信度: [高/中/低]
如果没有明显事件,请回答"无明显事件"
"""
# 数据库配置
DB_SCHEMA = """
CREATE TABLE IF NOT EXISTS images (
id INTEGER PRIMARY KEY AUTOINCREMENT,
path TEXT NOT NULL,
timestamp DATETIME DEFAULT CURRENT_TIMESTAMP,
camera_id INTEGER DEFAULT 0,
analyzed BOOLEAN DEFAULT 0
);
CREATE TABLE IF NOT EXISTS events (
id INTEGER PRIMARY KEY AUTOINCREMENT,
image_id INTEGER NOT NULL,
event_type TEXT,
description TEXT,
confidence TEXT,
timestamp DATETIME DEFAULT CURRENT_TIMESTAMP,
FOREIGN KEY (image_id) REFERENCES images(id)
);
CREATE INDEX IF NOT EXISTS idx_images_timestamp ON images(timestamp);
CREATE INDEX IF NOT EXISTS idx_events_type ON events(event_type);
"""