Skip to content

How to Bowl a Perfect Game: Senior Design Project using pose tracking, ball tracking, and supervised learning to improve bowling skills

License

Notifications You must be signed in to change notification settings

HalmonLui/copystrike

Repository files navigation

Copystrike (How to Bowl a Better Game)

Halmon Lui, Ryan Parekh, Logan O'keefe

A senior design project

Abstract

With a team of three bowling and coding enthusiasts, we came up with a solution to get the best of both worlds. We created an application to record a bowl and compare to bowls where the user has gotten a strike before. The program will then tell the user what angles and positions of their form to change in order to perform a strike again.

System

  • Pose detection uses OpenPose
  • Ball detection uses OpenCV
  • Machine Learning uses Scikit-Learn Image of system diagram

How it works

  1. Phone camera records bowler and ball
  2. OpenPose is used to track the bowler's form
  3. OpenCV is used to track the ball down the lane
  4. Scikit-Learn takes the features of both bowler's form and ball to return strikes
  5. A decision tree then tells the user how to improve

How to use it

You must first have these on your system:

  • Python3
  • Jupyter Notebook
  • OpenCV
  • OpenPose
  • Scikit-learn
  • Numpy
  • Scipy
  • Pandas
  • Matplotlib

The three parts of the system are not connected yet so you have to run them separately

  1. HSV_Picker.ipynb is used to select the HSV range for the ball you are going to track
  2. ball_tracking_final.ipynb is used to track the ball down the lane and output the trajectory
  3. driver.py is used to track the form of the bowler and outputs a JSON datafile
  4. ML_bowling_code_final.ipynb is used to apply supervised learning model KNN and outputs the suggestion

About

How to Bowl a Perfect Game: Senior Design Project using pose tracking, ball tracking, and supervised learning to improve bowling skills

Resources

License

Stars

Watchers

Forks

Releases

No releases published

Packages

No packages published