使用Python绘制关键点检测

在计算机视觉领域,将模型预测的关键点绘制回原始图像对于理解模型结果至关重要。通过使用Python的Supervision库,可以轻松地将来自MediaPipe、Detectron2YOLOv8等流行模型架构的关键点检测绘制到源图像上。Supervision是一个功能丰富的Python包,它为计算机视觉模型提供了广泛的工具,从可视化预测到后处理和过滤检测功能。

以下是一个使用Supervision绘制关键点检测的示例。本指南将展示如何使用Python和Supervision绘制关键点检测。让开始吧!

如何使用Python绘制关键点检测

首先,需要安装SupervisionPython包。可以使用以下代码安装该包:

pip install supervision

安装Supervision后,可以开始构建绘制关键点检测的逻辑。

要绘制预测结果,首先需要将数据加载到Supervision的KeyPoints对象中。使用Supervision的关键点数据加载器,可以使用一行代码从多种流行的关键点检测库中加载数据。支持的库包括:

  • Roboflow Inference
  • Detectron2
  • MediaPipe
  • Ultralytics(例如YOLOv8
  • YOLO-NAS

要查看支持库的完整列表,请参考。

在本指南中,将从Roboflow Inference加载结果。可以使用以下代码:

import cv2 import supervision as sv from inference import get_model model = get_model(model_id="keypoint") image = cv2.imread("SOURCE_IMAGE_PATH") results = model.infer(image)[0] detections = sv.KeyPoints.from_inference(results)

现在,模型检测结果已经加载到分配给变量detections的sv.KeyPoints对象中。

有了Supervision格式的检测结果,现在可以选择合适的注释器。Supervision为KeyPoints提供了几种注释器:

  • VertexAnnotator:在关键点处绘制点。
  • VertexLabelAnnotator:在关键点处绘制带有标签的点。
  • EdgeAnnotator:在所有关键点之间绘制线条。

在本指南中,将使用EdgeAnnotator。有关所有关键点注释器的完整列表,请参考。

选择了注释器后,可以使用以下代码:

edge_annotator = sv.EdgeAnnotator( color=sv.Color.GREEN, thickness=5 ) annotated_frame = edge_annotator.annotate( scene=image.copy(), key_points=key_points ) sv.plot_image(annotated_frame)

如果想使用其他注释器,请将上面的EdgeAnnotator替换为想要使用的注释器的名称。

当模型在两个人打篮球的图像上运行时,得到了以下结果:

模型成功地识别了关键点。然后Supervision将这些关键点绘制在输入图像上。

SupervisionPython包为计算机视觉模型提供了一系列的工具。在本指南中,介绍了如何使用Supervision KeyPoints API将关键点加载到Supervision中,并使用注释器将关键点绘制到图像上。使用了EdgeAnnotator,在图像中的所有关键点之间绘制线条。

沪ICP备2024098111号-1
上海秋旦网络科技中心:上海市奉贤区金大公路8218号1幢 联系电话:17898875485