实用脚本统计转身过人次数谁多?

wen 实用脚本 2

本文目录导读:

实用脚本统计转身过人次数谁多?

  1. 方案一:Python 半自动化统计(视频逐帧人工标记)
  2. 方案二:Excel 手动输入模板(含公式)
  3. 补充:什么是“转身过人”?
  4. 哪里能看现成的数据?

要统计球员的转身过人次数,目前没有现成的官方数据网站(如SofaScore、FBref)直接提供这个细分指标,因为“转身过人”属于高阶战术统计,通常需要通过视频分析软件(如Hudl、Wyscout、Stats Perform)逐帧标注

如果你是想对两名球员(或某一场比赛)进行手动/半自动统计,我可以为你提供两个实用脚本(基于Python和Excel),帮助你统计和对比

Python 半自动化统计(视频逐帧人工标记)

这个脚本适合你在观看比赛录像时使用,你只需在球员转身过人的瞬间按键盘上的指定按键,脚本会自动记录时间戳球员代号,比赛结束后自动输出对比结果。

环境准备

确保安装了Python和keyboard库(用于监听键盘):

pip install keyboard

统计脚本代码

将以下代码保存为 turn_counter.py

import keyboard
import time
import json
from datetime import datetime
# ====== 配置区 ======
PLAYER_A = "球员A"  # 梅西
PLAYER_B = "球员B"  # 姆巴佩
KEY_A = "a"         # 按A键记录球员A转身成功
KEY_B = "s"         # 按S键记录球员B转身成功
KEY_END = "q"       # 按Q键结束统计
# ===================
data = {"A": [], "B": []}
start_time = None
print(f"按 [{KEY_A}] 记录 {PLAYER_A} 转身成功")
print(f"按 [{KEY_B}] 记录 {PLAYER_B} 转身成功")
print(f"按 [{KEY_END}] 结束并输出统计")
print("-" * 40)
def count_turn():
    """主循环监听按键"""
    global start_time
    start_time = time.time()  # 记录开始时间
    while True:
        try:
            # 监听有效按键
            if keyboard.is_pressed(KEY_A):
                timestamp = round(time.time() - start_time, 2)
                data["A"].append(timestamp)
                print(f"✅ {PLAYER_A} 记录一次! 总次数: {len(data['A'])} (时间: {timestamp}s)")
                time.sleep(0.3)  # 防止长按重复
            elif keyboard.is_pressed(KEY_B):
                timestamp = round(time.time() - start_time, 2)
                data["B"].append(timestamp)
                print(f"✅ {PLAYER_B} 记录一次! 总次数: {len(data['B'])} (时间: {timestamp}s)")
                time.sleep(0.3)
            elif keyboard.is_pressed(KEY_END):
                break
        except Exception as e:
            print(f"错误: {e},请以管理员身份运行(Windows)或避免输入法干扰。")
            break
    return data
def save_report(final_data):
    """生成对比报告"""
    count_a = len(final_data["A"])
    count_b = len(final_data["B"])
    print("\n" + "=" * 40)
    print("📊 转身过人次数统计报告")
    print("=" * 40)
    print(f"{PLAYER_A}: {count_a} 次")
    print(f"{PLAYER_B}: {count_b} 次")
    print("-" * 40)
    if count_a > count_b:
        print(f"🏆  {PLAYER_A} 转身次数更多!多 {count_a - count_b} 次")
    elif count_b > count_a:
        print(f"🏆  {PLAYER_B} 转身次数更多!多 {count_b - count_a} 次")
    else:
        print("🤝 平局!")
    # 保存详细时间轴到文件
    filename = f"turn_stats_{datetime.now().strftime('%Y%m%d_%H%M%S')}.json"
    with open(filename, "w", encoding="utf-8") as f:
        json.dump({
            "player_A": {"name": PLAYER_A, "counts": final_data["A"]},
            "player_B": {"name": PLAYER_B, "counts": final_data["B"]}
        }, f, ensure_ascii=False, indent=4)
    print(f"\n详细记录已保存至: {filename}")
if __name__ == "__main__":
    # 运行前提示(避免Windows终端语法问题)
    print("⚠️ 请确保当前窗口处于激活状态,且不要使用中文输入法。")
    time.sleep(1)
    final_stats = count_turn()
    save_report(final_stats)

使用方法

  1. 用视频播放器播放比赛录像(建议5倍速)。
  2. 当球员A(如梅西)完成成功的转身过人时,按下键盘 A 键。
  3. 当球员B(如姆巴佩)完成时,按下 S 键。
  4. 比赛结束(或你认为采样时间足够)时,按 Q 键停止。
  5. 脚本会自动在终端输出谁多几次,并生成一个JSON文件用于备份。

Excel 手动输入模板(含公式)

如果你不想写代码,只想快速用表格记录,可以用Excel:

  1. 列设计

    • A列:时间(分钟)
    • B列:球员姓名(下拉菜单选A或B)
    • C列:成功/失败(可以不统计失败)
    • D列:备注(如:马赛回旋、克鲁伊夫转身等)
  2. 统计公式

    • 在F1单元格输入:=COUNTIF(B:B,"球员A")
    • 在G1单元格输入:=COUNTIF(B:B,"球员B")
    • 在H1单元格输入:=IF(F1>G1,"球员A转身多",IF(F1<G1,"球员B转身多","平局"))
  3. 操作

    • 看录像时,每当有转身过人,就在下一行输入球员名,按回车。
    • 表格实时自动更新谁多谁少。

补充:什么是“转身过人”?

为了统计准确,建议在统计前统一标准,通常需要同时满足:

  1. 有身体旋转动作(至少90度,通常180度)。
  2. 结果必须是过人(甩开防守球员完成摆脱)。
  3. 排除:普通的护球转圈、无防守压力下的转身、带球变向(不算转身)。

常见的技术动作包括:马赛回旋、克鲁伊夫转身、背身护球转身抹过等。


哪里能看现成的数据?

如果你不想自己统计,目前商业数据服务商(如WyscoutStats Perform)有手动清洗这种数据,但通常需要付费订阅(年费几千到几万美金),在免费公开数据(如FBref)中,你只能找到过人次数(Dribbles Success),但这个数据不区分是正面过人还是转身过人自己动手统计是目前最可行的办法

如果你有特定的比赛文件(比如全场录像视频),也可以告诉我,我可以提供更进阶的视频追踪脚本(如基于YOLO的目标检测,但那个对电脑配置要求较高)。

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