0

我有这个看起来像字典但不是:

{'additional_properties': {}, 'anger': 0.001, 'contempt': 0.002, 'disgust': 0.0, 'fear': 0.0, 'happiness': 0.542, 'neutral': 0.455, 'sadness': 0.0, 'surprise': 0.0}

我试过这个解决方案来修复它

鉴于:

d = {'additional_properties': {}, 'anger': 0.001, 'contempt': 0.002, 'disgust': 0.0, 'fear': 0.0, 'happiness': 0.542, 'neutral': 0.455, 'sadness': 0.0, 'surprise': 0.0}

格式化程序:

print(', '.join([f'{v:.0%} {k}' for k,v in d.items() if k != 'additional_properties']))

输出:

0% anger, 0% contempt, 0% disgust, 0% fear, 54% happiness, 46% neutral, 0% sadness, 0% surprise

但它不起作用,因为 Emotion 类没有像字典那样的任何 items() 方法

我正在使用的 API: https ://azure.microsoft.com/en-us/services/cognitive-services/face/#demo

有关文档中 Emotion 类的更多信息: https ://docs.microsoft.com/en-us/python/api/azure-cognitiveservices-vision-face/azure.cognitiveservices.vision.face.models.emotion?view=天蓝色蟒蛇

4

1 回答 1

1

关于这个问题,请参考以下代码

from azure.cognitiveservices.vision.face import FaceClient
from msrest.authentication import CognitiveServicesCredentials
import os
import json

endpoint = ''
key = ''
face_client = FaceClient(endpoint, CognitiveServicesCredentials(key))
single_face_image_url = 'https://azurecomcdn.azureedge.net/cvt-4c22a847f7d6cb9f6d140f4927646992a7343e54da079181e641d3aae5d130bb/images/shared/cognitive-services-demos/face-detection/detection-1-thumbnail.jpg'
single_image_name = os.path.basename(single_face_image_url)
face_attributes = ['emotion']
detected_faces = face_client.face.detect_with_url(
    url=single_face_image_url,
    detectionModel='detection_02',
    return_face_attributes=face_attributes)
if not detected_faces:
    raise Exception('No face detected from image {}'.format(single_image_name))

for face in detected_faces:
    emotionObject = face.face_attributes.emotion.as_dict()
    print(', '.join([f'{v:.0%} {k}' for k, v in emotionObject.items(
    ) if k != 'additional_properties']))

在此处输入图像描述

于 2020-12-14T03:02:50.657 回答