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

YOLOv8人脸识别模型预测结果无法导出为CSV/Excel文件求助

YOLOv8人脸识别结果导出到CSV/Excel解决方案

你的代码已经实现了摄像头实时跟踪,但仅获取了results数组未做解析导出。以下是修改后的代码,可将识别到的人员姓名、跟踪ID、置信度等数据导出到CSV/Excel文件:

完整代码实现

from ultralytics import YOLO
import pandas as pd
import os

# 加载训练好的自定义模型
model = YOLO(r"C:\Users\Administrator\Desktop\YoloV8\runs\detect\yolov8s_custom3\weights\best.pt")

# 定义导出文件路径
output_csv = "face_recognition_results.csv"

# 初始化结果数据表,定义字段
columns = ["帧ID", "跟踪ID", "人员姓名", "置信度", "框左上角X", "框左上角Y", "框右下角X", "框右下角Y"]
result_df = pd.DataFrame(columns=columns)

# 若文件已存在则加载原有数据(避免覆盖)
if os.path.exists(output_csv):
    result_df = pd.read_csv(output_csv)

# 逐帧处理摄像头流数据
for frame_idx, result in enumerate(model.track(source="0", show=True, stream=True)):
    # 仅当当前帧有检测结果和跟踪ID时处理
    if result.boxes.id is not None:
        # 提取关键数据并转换为numpy格式
        track_ids = result.boxes.id.cpu().numpy().astype(int)
        class_ids = result.boxes.cls.cpu().numpy().astype(int)
        confidences = result.boxes.conf.cpu().numpy()
        boxes = result.boxes.xyxy.cpu().numpy()
        
        # 将类别ID转换为人员姓名(对应你的自定义数据集类别名)
        person_names = [result.names[cls_id] for cls_id in class_ids]
        
        # 整理当前帧的识别数据
        current_frame_data = []
        for track_id, name, conf, box in zip(track_ids, person_names, confidences, boxes):
            x1, y1, x2, y2 = box
            current_frame_data.append({
                "帧ID": frame_idx,
                "跟踪ID": track_id,
                "人员姓名": name,
                "置信度": round(float(conf), 4),
                "框左上角X": round(float(x1), 2),
                "框左上角Y": round(float(y1), 2),
                "框右下角X": round(float(x2), 2),
                "框右下角Y": round(float(y2), 2)
            })
        
        # 将当前帧数据追加到总表
        frame_df = pd.DataFrame(current_frame_data)
        result_df = pd.concat([result_df, frame_df], ignore_index=True)
        
        # 每10帧保存一次数据(防止程序中断丢失内容)
        if frame_idx % 10 == 0:
            result_df.to_csv(output_csv, index=False)
            print(f"已更新结果至 {output_csv}")

# 程序结束前保存所有数据
result_df.to_csv(output_csv, index=False)
print(f"最终结果已保存至 {output_csv}")

关键说明

  1. 逐帧处理流数据:使用stream=True开启流模式,逐帧解析摄像头画面的识别结果
  2. 数据解析:从result.boxes中提取跟踪ID、类别ID、置信度、检测框坐标,通过result.names将类别ID转换为人员姓名(需确保你的自定义数据集类别名称为对应人名)
  3. 数据持久化:借助pandas管理数据,支持追加到现有CSV文件,每10帧自动保存一次,避免程序中断丢失数据
  4. 导出Excel:若需导出到Excel,只需将to_csv替换为to_excel,并安装依赖库openpyxl(执行pip install openpyxl),示例代码:
result_df.to_excel("face_recognition_results.xlsx", index=False, engine="openpyxl")

内容的提问来源于stack exchange,提问作者Randhir Singh Mehra

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.07.17 05:25:32