实用脚本统计假动作晃过防守几次?

wen 实用脚本 1

足球/篮球假动作晃过防守统计脚本

你说得比较简短,我理解你想统计假动作成功晃过防守人的次数,这通常需要视频分析或比赛事件记录,下面给你几个实用方案:

实用脚本统计假动作晃过防守几次?

手动打点统计(最简单实用)

如果你在看比赛录像,可以用这个脚本边看边按键记录:

import time
import csv
from datetime import datetime
# 简单的手动打点统计器
records = []
print("按 Enter 记录一次成功晃过防守,输入 q 退出")
count = 0
while True:
    key = input(f"[当前成功次数: {count}] 按Enter记录 / q退出: ")
    if key.lower() == 'q':
        break
    count += 1
    records.append({
        '序号': count,
        '时间戳': datetime.now().strftime('%H:%M:%S')
    })
    print(f"✅ 记录第 {count} 次假动作晃过")
# 导出CSV
with open('fake_move_stats.csv', 'w', newline='', encoding='utf-8-sig') as f:
    writer = csv.DictWriter(f, fieldnames=['序号', '时间戳'])
    writer.writeheader()
    writer.writerows(records)
print(f"\n总计:{count} 次成功晃过防守")

带类型的详细统计

区分不同假动作类型(如变向、假射、假传、身体晃动):

import csv
# 假动作类型映射
moves = {
    '1': '变向过人',
    '2': '假射',
    '3': '假传',
    '4': '身体晃动',
    '5': '踩单车',
    '6': '其他'
}
stats = {v: 0 for v in moves.values()}
detail = []
print("选择假动作类型(数字),回车记录:")
for k, v in moves.items():
    print(f"  {k}. {v}")
while True:
    choice = input("\n类型编号 (q退出): ")
    if choice.lower() == 'q':
        break
    if choice in moves:
        stats[moves[choice]] += 1
        detail.append(moves[choice])
        print(f"✅ 记录: {moves[choice]} | 该类型累计: {stats[moves[choice]]}")
    else:
        print("❌ 无效输入")
# 输出统计
print("\n===== 统计结果 =====")
total = sum(stats.values())
for k, v in stats.items():
    if v > 0:
        print(f"{k}: {v} 次")
print(f"总计: {total} 次成功晃过防守")
# 导出
with open('fake_move_detail.csv', 'w', newline='', encoding='utf-8-sig') as f:
    writer = csv.writer(f)
    writer.writerow(['假动作类型'])
    for d in detail:
        writer.writerow([d])

视频逐帧标记(进阶)

如果你有比赛视频,想精确到时间点:

import cv2
import csv
# 打开视频,按键标记假动作时间点
video_path = 'game.mp4'
cap = cv2.VideoCapture(video_path)
fps = cap.get(cv2.CAP_PROP_FPS)
marks = []
print("播放中:按 's' 标记成功晃过,'q' 退出")
while cap.isOpened():
    ret, frame = cap.read()
    if not ret:
        break
    cv2.imshow('Video', frame)
    key = cv2.waitKey(int(1000/fps)) & 0xFF
    if key == ord('s'):
        t = cap.get(cv2.CAP_PROP_POS_MSEC) / 1000
        marks.append(t)
        print(f"✅ 标记 @ {t:.1f}s | 累计 {len(marks)} 次")
    elif key == ord('q'):
        break
cap.release()
cv2.destroyAllWindows()
print(f"\n总计成功晃过: {len(marks)} 次")
with open('video_marks.csv', 'w', newline='', encoding='utf-8-sig') as f:
    writer = csv.writer(f)
    writer.writerow(['时间(秒)'])
    for m in marks:
        writer.writerow([f'{m:.1f}'])

AI自动识别(需要训练/现成模型)

要自动统计(不用手工打点),需要:

  1. 目标检测:YOLO 检测球员 + 球
  2. 姿态估计:MediaPipe / OpenPose 识别身体假动作
  3. 跟踪:ByteTrack 跟踪防守人和持球人
  4. 判断逻辑:持球人重心突变 + 防守人重心被带偏 → 计一次成功

这部分代码量大,且需要标注数据训练,一般用于专业球队分析,如果你有具体场景(足球还是篮球、有没有视频、是否需要 AI),我可以帮你写更针对性的脚本。


告诉我你的具体需求:

  • 足球还是篮球?
  • 你是想手动记录还是AI自动分析视频?
  • 有没有现成的比赛视频/数据?

我按你的场景给可直接运行的完整脚本。

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