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

DeepFace.analyze返回list而非dict,如何获取dominant_emotion?

解决DeepFace.analyze()返回列表而非字典的问题

当DeepFace.analyze()返回列表类型而非字典时,是因为该方法默认会检测图像中的所有人脸,每一张人脸的分析结果都会以字典形式存入列表中——哪怕图像里只有一张人脸,部分版本的DeepFace也会默认返回列表格式。

快速解决单人脸场景

如果你的图像只包含一张人脸,直接取列表的第一个元素即可将其转为字典格式:

import cv2  ## pip install opencv-python
from deepface import DeepFace  ## pip install deepface
import matplotlib.pyplot as plt

img = cv2.imread('happyboy.jpg')
plt.imshow(cv2.cvtColor(img, cv2.COLOR_BGR2RGB))

# 获取分析结果并转为字典(单人脸场景)
predictions = DeepFace.analyze(img)
if isinstance(predictions, list):
    predictions = predictions[0]

# 现在可以正常获取主导情绪
print(predictions['dominant_emotion'])

处理多人脸场景

如果图像包含多张人脸,需要遍历列表逐个获取每个人脸的分析数据:

predictions = DeepFace.analyze(img)
for face_prediction in predictions:
    print("人脸的主导情绪:", face_prediction['dominant_emotion'])

可选:强制返回单结果(部分版本支持)

你也可以通过指定参数让方法直接返回单个人脸的字典结果(仅当图像明确只有一张人脸时推荐):

# 使用detector_backend指定检测后端,或设置enforce_detection=False避免无脸报错
predictions = DeepFace.analyze(img, detector_backend='opencv', enforce_detection=True)

内容的提问来源于stack exchange,提问作者titouni salem

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.07.30 01:12:37