在计算机视觉领域,将模型预测的关键点绘制回原始图像对于理解模型结果至关重要。通过使用Python的Supervision库,可以轻松地将来自MediaPipe、Detectron2、YOLOv8等流行模型架构的关键点检测绘制到源图像上。Supervision是一个功能丰富的Python包,它为计算机视觉模型提供了广泛的工具,从可视化预测到后处理和过滤检测功能。
以下是一个使用Supervision绘制关键点检测的示例。本指南将展示如何使用Python和Supervision绘制关键点检测。让开始吧!
首先,需要安装SupervisionPython包。可以使用以下代码安装该包:
pip install supervision
安装Supervision后,可以开始构建绘制关键点检测的逻辑。
要绘制预测结果,首先需要将数据加载到Supervision的KeyPoints对象中。使用Supervision的关键点数据加载器,可以使用一行代码从多种流行的关键点检测库中加载数据。支持的库包括:
要查看支持库的完整列表,请参考。
在本指南中,将从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提供了几种注释器:
在本指南中,将使用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,在图像中的所有关键点之间绘制线条。