使用OpenCV实现球跟踪和落点预测

文摘   2024-11-12 07:45   重庆  
点击下方卡片,关注“OpenCV与AI深度学习

视觉/图像重磅干货,第一时间送达

    在这个项目中,我使用 Python、OpenCV、Cvzone 和一些数学(特别是多项式回归)开发了一个球跟踪系统。该系统可以跟踪视频中的球,可视化其轨迹,甚至预测它是否会落在特定区域——虚拟“篮筐”。下面,我将分解我是如何构建它的、我遇到的挑战以及我在此过程中实现的一些很酷的功能。
    第 1 步:设置环境
    我使用的关键库是用于图像和视频处理的 OpenCV、用于简化计算机视觉任务的 Cvzone 和用于数学运算的 NumPy。首先,我导入了必要的模块:
import mathimport cv2import cvzonefrom cvzone.ColorModule import ColorFinderimport numpy as np
    初始化:
cv2.VideoCapture() # grabbing frames from the video file `Videos/vid (3).mp4
    第 2 步:检测球
    为了检测球,我使用了 HSV(色相、饱和度、值)颜色检测。这允许我通过设置特定范围的 HSV 值来根据球的颜色跟踪球:
myColorFinder = ColorFinder(False)hsvVals = {'hmin': 8, 'smin': 96, 'vmin': 115, 'hmax': 14, 'smax': 255, 'vmax': 255}
    这些 HSV 值对应于我视频中球的颜色。定义颜色范围后,我从视频中抓取每一帧并对其进行处理以找到球。
    第 3 步:跟踪球
    在检测到球的颜色后,我使用 'cvzone.findContours()' 来定位球在每一帧中的位置。这就是它变得有趣的地方。对于检测到球的每一帧,我将其位置保存在两个列表中:'posListX' 用于 x 坐标,'posListY' 用于 y 坐标。
imgContours, contours = cvzone.findContours(img, mask, minArea=500)if contours: posListX.append(contours[0]['center'][0]) posListY.append(contours[0]['center'][1])
    “findContours”功能可以非常容易地找到球的确切位置,在检测到的球周围画一个绿色圆圈。
    第 4 步:可视化轨迹
    现在我已经有了球在各个帧中的位置,我使用多项式回归来模拟它的轨迹。多项式回归有助于找到二次方程的系数 A、B 和 C,该方程对球在 2D 空间中的运动进行建模:
A, B, C = np.polyfit(posListX, posListY, 2)
    使用这个方程,我可以预测任何给定 x 坐标的 y 坐标,从而在视频中绘制球的预测路径。
    第 5 步:预测结果
    最后的触球是预测球是否会落在特定区域。我使用从多项式回归中得出的二次方程来计算球在未来某个时间点的位置。
a = Ab = Bc = C - 590 # 590 represents the y-value threshold for the "basket" areax = int((-b - math.sqrt(b ** 2 - (4 * a * c))) / (2 * a))prediction = 330 < x < 430 # Basket zone
    如果球的 x 坐标落在 330 到 430 之间(我的“篮筐”范围),那就是一次成功的投篮!如果没有,它就错过了。
    第 6 步:显示结果
    我使用“cvzone.putTextRect()”在屏幕上实时显示预测。如果预测球会落入篮筐,则会出现绿色的“篮筐”消息;否则,会弹出一条红色的 “No Basket” 消息。
if prediction: cvzone.putTextRect(imgContours, "Basket", (50, 150), scale=5, thickness=5, colorR=(0, 200, 0), offset=20)else: cvzone.putTextRect(imgContours, "No Basket", (50, 150), scale=5, thickness=5, colorR=(0, 0, 200), offset=20)

—THE END—

下载1:Pytorch常用函数手册

在「OpenCV与AI深度学习公众号后台回复:Pytorch函数手册即可下载学习全网第一份Pytorch函数常用手册,包括Tensors介绍、基础函数介绍、数据处理函数、优化函数、CUDA编程、多处理等十四章内容。

下载2:145个OpenCV实例应用代码
在「OpenCV与AI深度学习」公众号后台回复:OpenCV145即可下载学习145个OpenCV实例应用代码(Python和C++双语言实现)。

欢迎加入CV学习交流微信

觉得有用,记得点个赞和在看 

OpenCV与AI深度学习
专注计算机视觉、深度学习和人工智能领域干货、应用、行业资讯的分享交流!
 最新文章