config.py 2.3 KB

12345678910111213141516171819202122232425262728293031323334353637383940414243444546474849505152
  1. import os
  2. class Settings:
  3. BASE_URL: str = "http://192.168.31.188:7721"
  4. # API 核心配置
  5. API_URL: str = "http://100.64.0.8/v1/workflows/run"
  6. API_KEY: str = "Bearer app-qR46FHcfLyKz2kb0tiiRfV50"
  7. USER_ID: str = "abc-123"
  8. # 滑动窗口配置 (可用于长视频的分片处理)
  9. CHUNK_SIZE: int = 10000
  10. OVERLAP_SIZE: int = 500
  11. # 静态资源与图片保存目录配置
  12. STATIC_DIR: str = os.path.join(os.getcwd(), "static")
  13. FRAMES_DIR: str = os.path.join(STATIC_DIR, "frames")
  14. # ==========================================
  15. # 视频帧分析算法配置 (Video Analysis Settings)
  16. # ==========================================
  17. # HuggingFace 语义分割模型路径 (用于识别手和卡片)
  18. VIDEO_SEG_MODEL_DIR: str = r"C:\Code\ML\Model\Card_Seg\segformer_card_hand02_safetensors"
  19. # 目标时间戳前后的搜索范围 (毫秒) -> 决定了去目标时间戳附近多大范围内寻找最佳帧
  20. VIDEO_SEARCH_BEFORE_MS: int = int(os.getenv("VIDEO_SEARCH_BEFORE_MS", "1000")) # 往前找/毫秒
  21. VIDEO_SEARCH_AFTER_MS: int = int(os.getenv("VIDEO_SEARCH_AFTER_MS", "6000")) # 往后找
  22. # 视频分析时的抽帧率 -> 例如 4.0 代表每秒只分析 4 帧,避免逐帧分析导致性能雪崩
  23. VIDEO_ANALYSIS_FPS: float = float(os.getenv("VIDEO_ANALYSIS_FPS", "4.0"))
  24. # 只对综合得分排名前 K 的候选帧进行 OCR 识别 (OCR 比较耗时,没必要每帧都跑)
  25. VIDEO_OCR_TOP_K: int = int(os.getenv("VIDEO_OCR_TOP_K", "5"))
  26. # 目标停留时间 (秒) -> 用来奖励那些在画面中稳定停留的帧 (排除一闪而过的残影)
  27. VIDEO_DWELL_TARGET_SECONDS: float = float(os.getenv("VIDEO_DWELL_TARGET_SECONDS", "1.2"))
  28. # 画面中被判定为"有卡"或"有手"的最小面积比例 (过滤掉误识别的零星像素)
  29. VIDEO_MIN_CARD_AREA_RATIO: float = float(os.getenv("VIDEO_MIN_CARD_AREA_RATIO", "0.01")) # 卡片占全图 >= 1%
  30. VIDEO_MIN_HAND_AREA_RATIO: float = float(os.getenv("VIDEO_MIN_HAND_AREA_RATIO", "0.005")) # 手占全图 >= 0.5%
  31. # 分割模型输出的类别 ID
  32. VIDEO_CARD_LABEL_ID: int = int(os.getenv("VIDEO_CARD_LABEL_ID", "1"))
  33. VIDEO_HAND_LABEL_ID: int = int(os.getenv("VIDEO_HAND_LABEL_ID", "2"))
  34. settings = Settings()
  35. # 确保图片输出目录存在,避免运行报错
  36. os.makedirs(settings.FRAMES_DIR, exist_ok=True)