You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

如何在YOLOv8中获取视频检测时间戳?代码返回空列表

解决YOLOv8视频结果时间戳获取为空的问题

你的代码核心问题有两个:

  1. 模型类型与结果属性不匹配:你用的是YOLOv8分类模型(yolov8n-cls.pt),却错误调用了检测模型特有的xyxy属性,分类模型的结果中根本没有这个字段,直接导致空列表。
  2. 结果遍历逻辑错误:model.predict返回的results是所有帧的结果列表,你直接取results.xyxy[0]完全不符合结果结构,应该逐个遍历results中的每帧结果。

分类模型场景修正代码

如果你的需求是视频帧分类,用下面的代码获取时间戳和分类结果:

from ultralytics import YOLO
from datetime import timedelta
import cv2

# 加载YOLOv8分类模型
model = YOLO('path/yolov8n-cls.pt')
video_path = 'your video path'
cap = cv2.VideoCapture(video_path)

# 获取视频帧率,用于计算时间戳
fps = cap.get(cv2.CAP_PROP_FPS)

# 开启流式推理,处理视频更高效
results = model.predict(video_path, stream=True)

# 遍历每帧的分类结果
for frame_idx, result in enumerate(results):
    # 计算当前帧的时间戳
    timestamp = timedelta(seconds=frame_idx / fps)
    # 获取置信度最高的分类结果
    top_class = result.names[result.probs.top1]
    top_confidence = result.probs.top1conf.item()
    print(f"Timestamp: {timestamp}, 类别: {top_class}, 置信度: {top_confidence:.4f}")

# 释放视频资源
cap.release()

目标检测场景修正代码

如果你的实际需求是目标检测(比如识别视频中的物体并获取框),需要换用检测模型(如yolov8n.pt),代码如下:

from ultralytics import YOLO
from datetime import timedelta
import cv2

# 加载YOLOv8检测模型
model = YOLO('path/yolov8n.pt')
video_path = 'your video path'
cap = cv2.VideoCapture(video_path)

fps = cap.get(cv2.CAP_PROP_FPS)

results = model.predict(video_path, stream=True)

for frame_idx, result in enumerate(results):
    timestamp = timedelta(seconds=frame_idx / fps)
    # 遍历当前帧中所有检测到的目标
    for detection in result.xyxy[0]:
        x1, y1, x2, y2, confidence, class_id = detection
        class_name = result.names[int(class_id)]
        print(f"Timestamp: {timestamp}, 类别: {class_name}, 置信度: {confidence:.4f}, 框坐标: ({x1:.2f}, {y1:.2f}, {x2:.2f}, {y2:.2f})")

cap.release()

关键说明

  • 分类模型的结果存储在result.probs中,包含top1(最高置信度类别索引)、top1conf(对应置信度)等属性。
  • 开启stream=True可以流式处理视频,大幅降低内存占用,适合处理长视频。
  • 时间戳计算依赖视频帧率,通过cv2.CAP_PROP_FPS获取后,用帧索引除以帧率得到对应秒数。

内容的提问来源于stack exchange,提问作者أحمد السديري

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.07.06 12:56:03