你知道怎么使用OpenCV检测篮球运动员吗?

重磅干货,第一时间送达

简介

通过使用深度学习和opencv,我们可以从视频剪辑中提取有趣的见解。请参阅下面的B / w UCF和Duke游戏的gif示例,在这里我们可以识别所有球员+裁判,并根据球员的球衣颜色将其标记为球队。

检测玩家

我们使用了像Faster RCNN这样的预训练检测模型来检测玩家。你们可以轻松地从Tensorflow Object Detection API下载针对COCO数据集训练的Faster RCNN并对其进行测试。API将每帧图像作为输入,并在80种不同的类别中进行检测。请阅读下面的样品检测示例,我们压制了太大的检测范围,无法更清晰地将玩家细分。你们也可以在API中使用得分阈值来过滤掉低置信度检测。

检测球队

现在来了有趣的部分。我们如何确定UCF对阵杜克大学的球员?我们可以使用OpenCV来做到这一点。OpenCV允许我们识别特定颜色的蒙版,并且可以使用它来识别白人和黑人玩家。主要步骤是:

  1. 将图像从BGR转换为HSV色彩空间
  2. 在HSV空间中,为白色和黑色指定颜色范围
  3. 使用OpenCV遮罩(彩色)阈值范围内的像素
  4. OpenCV Bitwise_and将蒙版中不存在的任何像素涂成黑色

请浏览下面的输出以了解白色。它们被屏蔽为“粉红色”,而其他所有内容均以黑色掩盖

为了确定每个玩家的团队,我们从张量流对象检测中提取了边界框,并计算该边界框中非黑色像素的百分比,以确定该玩家的团队。总体代码效果很好。但是,这是用于识别黑白球衣运动员的硬编码逻辑。通过使用聚类来查找相似的参与者,可以使其更加通用。

检测人体姿态

OpenPose是一个实时的多人姿势检测库。它可以检测图像中的人,并为每个人输出主要关节的关键点,每个人最多可以有25个关键点。安装后,你们可以通过它运行图像,并为场景中的所有播放器获取关键点,如下所示。

那么我们如何识别试图投篮的球员呢?我们可以寻找手腕关键点在头顶上方的玩家。暗示举手。这可能表示已准备好在上述场景中射击,也可能具有防御性。此外,球的坐标以及手腕关键点的坐标可以用于识别哪个举手的球员靠近球。

结论

深度学习使得通过链接不同的想法进行真正的酷分析成为可能。你们可以使用大量开放源代码和经过预训练的模型来开始使用数据。以上仅仅是起点。可以完成的其他很酷的事情包括:

  1. 使用OCR读取比赛成绩,以使你们的系统了解哪个球队获胜
  2. 跟踪球以预测何时射门可以得分
  3. 跟踪玩家以获取每个玩家的统计信息
  4. 检测诸如灌篮,三分篮球等事件
下载1:OpenCV-Contrib扩展模块中文版教程
(0)

相关推荐