图像分类 - 虚拟IoT硬件和Raspberry Pi 在这节课的这一部分,你将把相机拍摄到的图像发送到自定义视觉服务以对其进行分类。 向自定义视觉发送图像 自定义视觉服务提供了一个Python SDK来对图像进行分类。 任务 - 向自定义视觉发送图像 在VS Code中打开 文件夹。如果你使用的是虚拟IoT设备,请确保虚拟环境在终端中运行。 发送图像到自定义视觉的Python SDK作为一个Pip包可用。使用以下命令安装它: 在 文件顶部添加以下导入语句: 这些语句从自定义视觉库中引入了一些模块,一个是用于通过预测密钥进行身份验证的模块,另一个是提供一个可以调用自定义视觉的预测客户端类。
在这节课的这一部分,你将把相机拍摄到的图像发送到自定义视觉服务以对其进行分类。
自定义视觉服务提供了一个Python SDK来对图像进行分类。
在VS Code中打开fruit-quality-detector文件夹。如果你使用的是虚拟IoT设备,请确保虚拟环境在终端中运行。
发送图像到自定义视觉的Python SDK作为一个Pip包可用。使用以下命令安装它:
pip3 install azure-cognitiveservices-vision-customvision
在app.py文件顶部添加以下导入语句:
from msrest.authentication import ApiKeyCredentials from azure.cognitiveservices.vision.customvision.prediction import CustomVisionPredictionClient
这些语句从自定义视觉库中引入了一些模块,一个是用于通过预测密钥进行身份验证的模块,另一个是提供一个可以调用自定义视觉的预测客户端类。
在文件末尾添加以下代码:
prediction_url = '<prediction_url>' prediction_key = '<prediction key>'
将<prediction_url> with the URL you copied from the Prediction URL dialog earlier in this lesson. Replace <prediction key>替换为你从同一对话框复制的预测密钥。
预测URL是由“预测URL”对话框提供的,设计用于直接调用REST端点。Python SDK在不同地方使用了URL的不同部分。添加以下代码以将此URL拆分为所需的部分:
parts = prediction_url.split('/') endpoint = 'https://' + parts[2] project_id = parts[6] iteration_name = parts[9]
这会将URL拆分,提取出https://<location>.api.cognitive.microsoft.com的端点、项目的ID以及已发布的迭代名称。
使用以下代码创建一个预测器对象来进行预测:
prediction_credentials = ApiKeyCredentials(in_headers={"Prediction-key": prediction_key}) predictor = CustomVisionPredictionClient(endpoint, prediction_credentials)
prediction_credentials包装了预测密钥。然后这些密钥被用来创建一个指向端点的预测客户端对象。
使用以下代码将图像发送到自定义视觉:
image.seek(0) results = predictor.classify_image(project_id, iteration_name, image)
这会将图像回绕到开头,然后将其发送给预测客户端。
最后,使用以下代码显示结果:
for prediction in results.predictions: print(f'{prediction.tag_name}:\t{prediction.probability * 100:.2f}%')
这将在终端中循环遍历所有返回的预测并显示它们。返回的概率是从0到1的浮点数,其中0表示匹配标签的几率为0%,1表示匹配标签的几率为100%。
图像分类器将为所有使用的标签返回百分比。每个标签都会有一个概率,表明该图像与该标签匹配的可能性。
运行你的代码,将摄像头对准一些水果,或适当的图像集,或如果使用虚拟IoT硬件,则对准摄像头中的水果。你将在控制台中看到输出:
(.venv) ➜ fruit-quality-detector python app.py ripe: 56.84% unripe: 43.16%
你将能够看到拍摄到的图像,并在自定义视觉的“预测”选项卡中查看这些值。

你可以在code-classify/pi或code-classify/virtual-iot-device文件夹中找到此代码。
你的水果质量分类程序成功了!
声明:
本文件灏天文库团队进行了翻译。尽管我们力求准确,但请注意,翻译可能包含错误或不准确之处。原文档以其原始语言为准。我们不对因使用此翻译而产生的任何误解或误译负责。