首页 > 解决方案 > Azure 计算机视觉 API 返回默认值

问题描述

我目前正在使用计算机视觉 API 来获取图像尺寸以及检测颜色和成人内容。

API 返回包含宽度、高度和格式的正确元数据,但颜色或成人内容的所有值都作为默认值返回(零/空/假/“无”)。

如果有任何区别,我将调用美国西部的服务,该服务被列为启用了这些功能。另外,我在请求中指定我想要这些功能,这就是我收到这两个功能的对象的原因。

如何让这些信息相应地填充?

我刚刚用于今天的 Bing 图像的示例请求。我正在使用Microsoft.Azure.CognitiveServices.Vision.ComputerVision来自 nuget 的包,其中包含该AnalyzeImageAsync方法。

POST https://westus.api.cognitive.microsoft.com/vision/v1.0/analyze? 
visualFeatures=Adult%2CColor HTTP/1.1
Ocp-Apim-Subscription-Key: <REMOVED>
User-Agent: FxVersion/4.6.26515.07 Microsoft.Azure.CognitiveServices.Vision.ComputerVision.ComputerVisionAPI/1.1.0.0
x-ms-request-root-id: 5e7823bb-4cac1f594af57fcf
x-ms-request-id: |5e7823bb-4cac1f594af57fcf.2.
Request-Id: |5e7823bb-4cac1f594af57fcf.2.
Content-Type: application/json; charset=utf-8
Content-Length: 129
Host: westus.api.cognitive.microsoft.com

{
"url": "https://outerpulsemedia.blob.core.windows.net/uploads/images/0be893af-9edc-416a-a779-929d2e2d1428-1529100079.jpg"
}

回复:

{
    "adult": {
        "isAdultContent": false,
        "adultScore": 0.0,
        "isRacyContent": false,
        "racyScore": 0.0
    },
    "color": {
        "dominantColorForeground": "None",
        "dominantColorBackground": "None",
        "dominantColors": [],
        "accentColor": "000000",
        "isBwImg": false
    },
    "requestId": "5b57186d-9976-4af7-97fd-e06b33fb0ecb",
    "metadata": {
        "height": 1200,
        "width": 1920,
        "format": "Jpeg"
    }
}

标签: microsoft-cognitive

解决方案


严格来说,JPEG 图像没有正确编码。特别是EOI(图像结束)标记丢失。图像应以 结尾FF D9,而您的图像仅以 结尾FF。这就是图像分类器返回默认值而不是真实值的原因。

虽然可能会出现 (a) 返回响应具有欺骗性,或者 (b) API 应该返回 400 Bad Request 的情况,但尝试了解图像如何被截断一个字节可能更有益.


推荐阅读