快速入门:使用计算机视觉中的 REST API 和 Go 分析远程图像

在本快速入门中,你将使用计算机视觉的 REST API 分析远程存储的图像以提取视觉特征。 使用分析图像方法,可以根据图像内容提取视觉特征。

如果没有 Azure 订阅,可在开始前创建一个试用帐户

先决条件

  • 必须安装有 Go
  • 必须具有计算机视觉的订阅密钥。 要获取订阅密钥,请参阅获取订阅密钥

创建并运行示例

要创建和运行示例,请执行以下步骤:

  1. 将以下代码复制到文本编辑器中。
  2. 必要时在代码中进行如下更改:
    1. subscriptionKey 的值替换为你的订阅密钥。
    2. 如有必要,请将 uriBase 的值替换为获取的订阅密钥所在的 Azure 区域中的分析图像方法的终结点 URL。
    3. (可选)将 imageUrl 的值替换为要分析的其他图像的 URL。
  3. 将代码保存为以 .go 为扩展名的文件。 例如,analyze-image.go
  4. 打开命令提示符窗口。
  5. 在提示符处运行 go build 命令,对文件中的包进行编译。 例如,go build analyze-image.go
  6. 在提示符处,运行所编译的包。 例如,analyze-image
package main

import (
    "encoding/json"
    "fmt"
    "io/ioutil"
    "net/http"
    "strings"
    "time"
)

func main() {
    // Replace <Subscription Key> with your valid subscription key.
    const subscriptionKey = "<Subscription Key>"

    const uriBase =
        "https://api.cognitive.azure.cn/vision/v2.0/analyze"
    const imageUrl =
        "https://upload.wikimedia.org/wikipedia/commons/3/3c/Shaki_waterfall.jpg"

    const params = "?visualFeatures=Description&details=Landmarks&language=en"
    const uri = uriBase + params
    const imageUrlEnc = "{\"url\":\"" + imageUrl + "\"}"

    reader := strings.NewReader(imageUrlEnc)

    // Create the HTTP client
    client := &http.Client{
        Timeout: time.Second * 2,
    }

    // Create the POST request, passing the image URL in the request body
    req, err := http.NewRequest("POST", uri, reader)
    if err != nil {
        panic(err)
    }

    // Add request headers
    req.Header.Add("Content-Type", "application/json")
    req.Header.Add("Ocp-Apim-Subscription-Key", subscriptionKey)

    // Send the request and retrieve the response
    resp, err := client.Do(req)
    if err != nil {
        panic(err)
    }

    defer resp.Body.Close()

    // Read the response body
    // Note, data is a byte array
    data, err := ioutil.ReadAll(resp.Body)
    if err != nil {
        panic(err)
    }

    // Parse the JSON data from the byte array
    var f interface{}
    json.Unmarshal(data, &f)

    // Format and display the JSON result
    jsonFormatted, _ := json.MarshalIndent(f, "", "  ")
    fmt.Println(string(jsonFormatted))
}

检查响应

成功响应将以 JSON 格式返回。 示例应用程序会在命令提示符窗口中分析和显示成功响应,如下例所示:

{
  "categories": [
    {
      "detail": {
        "landmarks": []
      },
      "name": "outdoor_water",
      "score": 0.9921875
    }
  ],
  "description": {
    "captions": [
      {
        "confidence": 0.916458423253597,
        "text": "a large waterfall over a rocky cliff"
      }
    ],
    "tags": [
      "nature",
      "water",
      "waterfall",
      "outdoor",
      "rock",
      "mountain",
      "rocky",
      "grass",
      "hill",
      "covered",
      "hillside",
      "standing",
      "side",
      "group",
      "walking",
      "white",
      "man",
      "large",
      "snow",
      "grazing",
      "forest",
      "slope",
      "herd",
      "river",
      "giraffe",
      "field"
    ]
  },
  "metadata": {
    "format": "Jpeg",
    "height": 959,
    "width": 1280
  },
  "requestId": "a92f89ab-51f8-4735-a58d-507da2213fc2"
}

后续步骤

了解计算机视觉 API,它用于分析图像、检测名人和地标、创建缩略图,并提取印刷体文本和手写文本。 要快速体验计算机视觉 API,请尝试使用 Open API 测试控制台