首页 > 解决方案 > 无法使用 Microsoft 的计算机视觉获得图像的主色

问题描述

我一直在这个问题上停留了一段时间。我正在尝试使用 Microsoft 的计算机视觉服务获得图像的主色。我的代码摘录如下:

import {VisualFeatureTypes} from "@azure/cognitiveservices-computervision/esm/models";
...

let visualFeatures: VisualFeatureTypes[] = ['Color'];
const caption = (await computerVisionClient.analyzeImageInStream(describeURL, visualFeatures));

执行 aconsole.log(caption)返回以下 JSON 对象:

{
  "categories": [
    {
      "name": "others_",
      "score": 0.15625
    }
  ],
  "requestId": "5a24115f-8095-4a77-8aa9-2d719dce99e6",
  "metadata": {
    "width": 500,
    "height": 500,
    "format": "Jpeg"
  }
}

计算机视觉服务肯定有效,因为如果我将方法从analyzeImageInStreamtodescribeImageInStream和 remove 更改,那么我会得到适当的响应。

为了测试,我一直在这里使用这张图片,并使用计算机视觉的演示。该演示返回颜色信息,但我的 API 调用没有。

任何帮助将不胜感激。

标签: javascripttypescriptazure

解决方案


根据此文档,您应该将参数放在您的网址中。https://docs.microsoft.com/en-us/azure/cognitive-services/computer-vision/quickstarts/javascript-analyze

const urlBase = "https://....cognitiveservices.azure.com/vision/v3.0/analyze";
var params = {
        "visualFeatures": "Categories,Description,Color",
        "details": "",
        "language": "en",
    };

$.ajax({
        url: uriBase + "?" + $.param(params),
        // Request headers.
        beforeSend: function(xhrObj){
            xhrObj.setRequestHeader("Content-Type","application/json");
            xhrObj.setRequestHeader(
                "Ocp-Apim-Subscription-Key", subscriptionKey);
        },
        type: "POST",
        // Request body.
        data: '{"url": ' + '"' + sourceImageUrl + '"}',
    }) .done(function(data) {
        // Show formatted JSON on webpage.
        callYourFunction(data);
    })

推荐阅读