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}")
关键说明
- 逐帧处理流数据:使用
stream=True开启流模式,逐帧解析摄像头画面的识别结果 - 数据解析:从
result.boxes中提取跟踪ID、类别ID、置信度、检测框坐标,通过result.names将类别ID转换为人员姓名(需确保你的自定义数据集类别名称为对应人名) - 数据持久化:借助pandas管理数据,支持追加到现有CSV文件,每10帧自动保存一次,避免程序中断丢失数据
- 导出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
相关产品推荐
相关产品推荐

