首页 > 解决方案 > 如何调用 Azure 认知服务 API?

问题描述

我使用 Azure 自定义视觉(认知服务)创建并训练了一个图像分类模型,并使用 API 发布了该模型。现在,我用 Python 编写了一个简单的代码,它从给定的 URL 获取图像并调用 API。但是,即使图像确实存在,我仍然会收到此错误:

使用 open(URL, "rb") as image_contents: FileNotFoundError: [Errno 2] No such file or directory: ' https://upload.wikimedia.org/wikipedia/commons/5/55/Dalailama1_20121014_4639.jpg '

代码如下:

from azure.cognitiveservices.vision.customvision.prediction import CustomVisionPredictionClient

ENDPOINT = "https://westeurope.api.cognitive.microsoft.com/"
PROJECT_ID = "bbed3f99-4199-4a17-81f2-df83f0659be3"

# Replace with a valid key
prediction_key = "<my prediction key>"
prediction_resource_id = "/subscriptions/97c4e143-9c0c-4f1e-b880-15492e327dd1/resourceGroups/WestEurope/providers/Microsoft.CognitiveServices/accounts/HappyAI"
publish_iteration_name = "Iteration5"

# Classify image
URL = "https://upload.wikimedia.org/wikipedia/commons/5/55/Dalailama1_20121014_4639.jpg"

# Now there is a trained endpoint that can be used to make a prediction
predictor = CustomVisionPredictionClient(prediction_key, endpoint=ENDPOINT)

with open(URL, "rb") as image_contents:
    results = predictor.classify_image(
        PROJECT_ID, publish_iteration_name, image_contents.read())

    # Display the results.
    for prediction in results.predictions:
        print("\t" + prediction.tag_name +
              ": {0:.2f}%".format(prediction.probability * 100))

帮助将不胜感激!

提前致谢!

标签: pythonazureapiazure-cognitive-services

解决方案


有两种方法可以将图像提供给认知服务。你正在混合两者;)

1) 提供可通过 Internet 访问的图像的 URL。您可以通过向服务发送 JSON 来执行此操作: {"url":"https://sample.com/myimage.png"}

2) 在 POST 请求中将图像作为二进制文件上传。

在此处输入图像描述

来源:https ://docs.microsoft.com/en-us/azure/cognitive-services/custom-vision-service/use-prediction-api#get-the-url-and-prediction-key

您的问题是您正在尝试使用open()方法 2。但是,这不适用于 Python 中的远程文件。如果您想这样做(而不是方法 1),请使用 urllib2.urlopen 之类的示例


推荐阅读