大家好,我是小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,