基于YOLO算法实现网球运动实时分析(附源码)

大家好,我是小F~

今天给大家介绍一个计算机视觉实战的项目。

该项目使用YOLO算法检测球员和网球,并利用cnn提取球场关键点。

进而分析视频中的网球运动员,测量他们的速度、击球速度和击球次数。

使用win10电脑,Python 3.9.7,相关依赖版本如下。

numpy==1.22.4

opencv_python==4.8.0.74

pandas==2.2.2

torch==2.0.1

torchvision==0.15.2

ultralytics==8.0.178

可以使用conda创建Python环境,然后执行主程序。

电脑无需GPU,普通CPU电脑即可~

# 创建Python环境

conda create --name tennis_analysis python=3.9.7

# 激活环境

conda activate tennis_analysis

# 安装依赖

pip install -r requirements.txt -i https://mirror.baidu.com/pypi/simple

# 执行程序

python main.py

主程序代码如下。

from utils import (read_video,

save_video,

measure_distance,

draw_player_stats,

convert_pixel_distance_to_meters

)

import constants

from trackers import PlayerTracker, BallTracker

from court_line_detector import CourtLineDetector

from mini_court import MiniCourt

import cv2

import pandas as pd

from copy import deepcopy

def main():

# Read Video

input_video_path = "input_videos/input_video.mp4"

video_frames = read_video(input_video_path)

# Detect Players and Ball

player_tracker = PlayerTracker(model_path='yolov8x')

ball_tracker = BallTracker(model_path='models/yolo5_last.pt')

player_detections = player_tracker.detect_frames(video_frames,

read_from_stub=True,

stub_path="tracker_stubs/player_detections.pkl"

)

ball_detections = ball_tracker.detect_frames(video_frames,