这是我目前的跟踪代码 我现在只想跟踪人物 而不是其他的物品 import cv2 from ultralytics import YOLO cap = cv2.VideoCapture("./video/10.mp4") model = YOLO("yolov8n.pt") model.classes = [0] # Assuming 'person' class index is 0 while True: ret, frame = cap.read() if not ret: break results = model.track(frame, persist=True) boxes = results[0].boxes.xyxy.cpu().numpy().astype(int) ids = results[0].boxes.id.cpu().numpy().astype(int) names = results[0].names print(names) for box, id, name in zip(boxes, ids, names): if name == 'person': cv2.rectangle(frame, (box[0], box[1]), (box[2], box[3]), (0, 255, 0), 2) cv2.putText( frame, f"Id {id}", (box[0], box[1]), cv2.FONT_HERSHEY_SIMPLEX, 1, (0, 0, 255), 2, ) cv2.imshow("frame", frame) if cv2.waitKey(1) & 0xFF == ord("q"): break
时间: 2024-04-20 18:22:10 浏览: 112
Python YOLO笔记(内含代码实例).md
您的代码看起来已经实现了只跟踪人物而不是其他物品的功能。在您的代码中,您已经将YOLO模型的类别设置为只包括人物(class index为0)。然后,在检测到目标后,您使用了一个条件语句来检查目标的名称是否为'person',如果是,则在图像上绘制框和标签。
这样做的话,只有当目标的名称是'person'时,才会绘制框和标签,其他物品将被忽略。所以您目前的代码已经实现了只跟踪人物的要求。
如果您希望进一步优化跟踪效果,您可以尝试调整YOLO模型的阈值,以过滤掉低置信度的检测结果。此外,您还可以尝试使用其他技术或模型来提高人物识别的准确性。
希望这个解答对您有所帮助!如果您对此有任何其他问题,请随时提问。
阅读全文