如何在Python脚本中获取YOLOv8的预测类别名称数据
提取YOLOv8预测的类别名称
解决步骤
- 关闭默认控制台输出:在
model.predict中添加verbose=False参数,避免打印帧尺寸、耗时等多余信息。 - 解析Results对象:
results是Results对象的列表(每帧对应一个对象),直接通过对象属性提取类别数据,无需转字符串处理。
完整代码示例
from ultralytics import YOLO from collections import Counter model = YOLO("yolov8n.pt") # 处理摄像头输入,关闭默认打印输出 results = model.predict(source="0", verbose=False) # 遍历每帧检测结果 for frame_idx, result in enumerate(results): # 获取所有检测框的类别索引并转为整数列表 class_indices = result.boxes.cls.int().tolist() # 将索引映射为具体类别名称 class_names = [result.names[idx] for idx in class_indices] # 输出当前帧的所有检测类别(含重复) print(f"第{frame_idx+1}帧检测类别: {class_names}") # 输出去重后的类别及对应数量 class_counts = Counter(class_names) print("类别统计:") for cls, count in class_counts.items(): print(f" {cls}: {count}")
关键属性说明
result.boxes.cls:存储当前帧所有检测框的类别索引(张量格式),需转为整数列表后使用。result.names:模型内置的类别名称字典,键为类别索引,值为对应名称(如0: 'person')。
内容的提问来源于stack exchange,提问作者gurselturkeri
相关产品推荐
相关产品推荐

