"""
YOLOv10 目标检测 Demo(官方 ultralytics >=8.3.0)
首次运行会自动下载 yolov10n.pt 到 ~/.cache/ultralytics
"""
import cv2
from ultralytics import YOLO
def main():
# 用统一的 YOLO 类加载 YOLOv10 预训练权重
model = YOLO("yolov10n.pt") # 自动下载;也可用 yolov10s/m/l/x.pt
# 1) 对单张图片做推理
img_path = "img.jpg"
results = model(img_path, imgsz=640, conf=0.25)
r = results[0]
print("检测到", len(r.boxes), "个目标")
print("类别:", [model.names[int(c)] for c in r.boxes.cls.tolist()])
# 画框并保存
annotated = r.plot()
cv2.imwrite("result.jpg", annotated)
print("结果已保存为 result.jpg")
# 2)(可选)训练示例 —— 取消注释即可在 COCO8 小数据集上试跑
# model.train(data="coco8.yaml", epochs=3, imgsz=640, device="cpu")
if __name__ == "__main__":
main()