这个实用脚本怎么看VAR介入的几次判罚?

wen 实用脚本 3

本文目录导读:

这个实用脚本怎么看VAR介入的几次判罚?

  1. VAR介入时画面通常有哪些特征
  2. 脚本核心思路
  3. 可直接运行的脚本(模板匹配版)
  4. 如果没有清晰的 VAR 图标怎么办
  5. 更省事的替代方案
  6. 精度提升建议

要在足球比赛转播/录像中快速定位 VAR介入的几次判罚,关键在于识别画面里的“VAR标识镜头”,下面给你一套实用脚本思路(以 Python + OpenCV 为例),可以直接跑,也可以按需改成剪辑工具。


VAR介入时画面通常有哪些特征

特征 说明
画面角落出现 VAR 图标 通常是右上角/左上角的 “VAR” 字样或回放图标
画面切换为“回放” 多机位慢动作、带条纹/边框
字幕条出现 “VAR CHECK”“Reviewing…” 等英文提示
比赛暂停 球员静止、裁判手按耳机
比分条变化 有时会显示 “VAR” 小标签

最稳的是 VAR 图标 + 回放画面 的组合。


脚本核心思路

视频 → 逐帧读取 → 检测 VAR 图标区域 → 连续命中则标记为一次VAR介入 → 输出时间点

可直接运行的脚本(模板匹配版)

import cv2
import numpy as np
from datetime import timedelta
VIDEO = "match.mp4"
TEMPLATE = "var_icon.png"   # 事先截一张VAR图标的模板图
# 参数
THRESH = 0.80        # 匹配阈值
CONFIRM_FRAMES = 15  # 连续命中多少帧算一次VAR
COOLDOWN_SEC = 60    # 两次VAR之间至少间隔秒数,避免重复计数
cap = cv2.VideoCapture(VIDEO)
fps = cap.get(cv2.CAP_PROP_FPS)
template = cv2.imread(TEMPLATE, 0)
tw, th = template.shape[::-1]
events = []
hit_count = 0
last_time = -999
while True:
    ret, frame = cap.read()
    if not ret:
        break
    t = cap.get(cv2.CAP_PROP_POS_FRAMES) / fps
    gray = cv2.cvtColor(frame, cv2.COLOR_BGR2GRAY)
    # 只在右上角区域搜索,速度快很多
    h, w = gray.shape
    roi = gray[0:int(h*0.15), int(w*0.6):w]
    res = cv2.matchTemplate(roi, template, cv2.TM_CCOEFF_NORMED)
    _, max_val, _, _ = cv2.minMaxLoc(res)
    if max_val >= THRESH:
        hit_count += 1
    else:
        hit_count = 0
    if hit_count == CONFIRM_FRAMES and (t - last_time) > COOLDOWN_SEC:
        events.append(t)
        last_time = t
        print(f"[VAR] {timedelta(seconds=int(t))}")
cap.release()
print("\n=== VAR介入时间点 ===")
for i, e in enumerate(events, 1):
    print(f"{i}. {timedelta(seconds=int(e))}")

用法:

  1. 从比赛录像里截一张 VAR 图标的小图(var_icon.png)。
  2. 把 VIDEO 改成你的文件。
  3. 运行,输出所有 VAR 介入时间点。

如果没有清晰的 VAR 图标怎么办

可以退而求其次,用多特征投票:

  1. 画面静止检测:连续多帧差异极小 → 比赛暂停。
  2. 回放边框检测:上下黑边 / 条纹边框 → 回放。
  3. OCR 字幕:用 pytesseract 识别 “VAR”“Review”。
  4. 音频突变:解说音调变化(需要 librosa)。

把这些信号加权,超过阈值就算一次 VAR。


更省事的替代方案

  • 直接用现成工具:
    • PySceneDetect —— 自动切分回放片段,再人工筛。
    • ffmpeg 抽帧 + EasyOCR 批量识别 “VAR”。
  • 半自动:脚本先粗筛出候选时间段,你只需人工确认几次。
  • 看官方App/数据:

    FIFA / 英超 / 中超官方赛后都会公布 VAR 介入记录,直接对照时间点验证脚本结果更省事。


精度提升建议

问题 解决
图标位置不固定 扩大 ROI 或全图搜索(慢但准)
图标大小变化 多尺度匹配 cv2.matchTemplate + 金字塔
误检广告牌 加入颜色过滤(VAR 图标多半是白/黑底)
漏检 降低阈值 + 增加确认帧数
想区分“检查”和“改判” 再训练一个小分类器,或 OCR 字幕关键词

如果你告诉我:

  • 视频来源(英超/中超/世界杯?)
  • 分辨率、VAR 图标大概长什么样
  • 你想要时间点列表还是自动剪出片段

我可以把上面脚本改成更贴合你场景的版本(比如自动导出每次 VAR 的 30 秒剪辑)。

抱歉,评论功能暂时关闭!