python - 在 CustomVision.ai API 中发布数据时出错
问题描述
我已经在 customvision.ai 上训练了模型并获得了预测键和端点。
这是我写的
import requests
import json
url="https://centralindia.api.cognitive.microsoft.com/customvision/v3.0/Prediction/xxxxxxxxxx/classify/iterations/Iteration1/url"
headers={'content-type':'application/json','Prediction-Key':'24xxxxxxxxxxxxxxxxxxxxxx'}
body={"Url": "https://i.imgur.com/cYzaOkV.jpg"}
r =requests.post(url,data=body,headers=headers)
print(r.content)
但是当我试图运行它时,我得到了这个错误:
b'{"code":"BadRequestImageUrl","message":"Invalid image url"}'
但是,我尝试使用本地图像调用我的模型,在这种情况下,它可以正常工作在这里为本地 img 编写的代码:
import requests
import json
url="https://centralindia.api.cognitive.microsoft.com/customvision/v3.0/Prediction/82xxxxxxxxxxxxxxxxxxxx/classify/iterations/Iteration1/image"
headers={'content-type':'application/octet-stream','Prediction-Key':'24xxxxxxxxxxxxxxxxxx'}
r =requests.post(url,data=open("lentigo-adults-1.jpg","rb"),headers=headers)
print(r.content)
我得到了我想要的输出:
b'{"id":"43a1d33b-0ea9-490a-9ae4-d24f8395931a","project":"82462bcc-5616-4f82-98ea-8d4fda55a9e6","iteration":"d0e48a13-e906-4af2-9f4c-15d79e3b4576","created":"2020-10-14T13:48:41.671Z","predictions":[{"probability":0.999876738,"tagId":"b5bd1d3a-dbcd-4b0d-ad0b-3f8d7b12fbea","tagName":"Lentigo"},{"probability":0.0001100349,"tagId":"c69433ef-4630-4e0f-8077-2de485483323","tagName":"Acne Cystic"},{"probability":1.29300688E-05,"tagId":"2102157b-b250-4c3d-bf2a-588cda8e93eb","tagName":"Rosacea"},{"probability":1.10303489E-07,"tagId":"ea68f8e7-b50f-4ca0-88dc-c2c8f3bb6823","tagName":"Herpes"},{"probability":9.26677259E-08,"tagId":"29c5c735-90f7-48ff-b23c-545be3325e9e","tagName":"Acne Pustular"},{"probability":7.811148E-08,"tagId":"579b080c-4ab1-405f-a8bd-5bf32efd9b70","tagName":"Melasma"},{"probability":3.90258634E-08,"tagId":"8340afdd-b758-46b4-9aee-754480437f0e","tagName":"Acne Comedo"},{"probability":1.49268364E-09,"tagId":"b89f964a-1a72-41ec-b8b7-8e0d7e9ef8ff","tagName":"Eczema"}]}'
谁能帮帮我吗??我想使用 img url 调用这个端点
感谢您给我宝贵的时间来解决我的问题。
解决方案
根据我的测试,当我们调用图片 URL 端点时,body 应该是 json 字符串。请将代码更新 r =requests.post(url,data=body,headers=headers)
为response = requests.post( url, headers=headers, data=json.dumps(body))
例如
import requests
import json
url = "https://testvision03.cognitiveservices.azure.com/customvision/v3.0/Prediction/<>/detect/iterations/Iteration1/url"
body = {"Url": "https://i.imgur.com/cYzaOkV.jpg"}
headers = {
'Prediction-Key': '',
'Content-Type': 'application/json'
}
response = requests.post(url, headers=headers, data=json.dumps(body))
print(response.text.encode('utf8'))
推荐阅读
- css - 使项目列表可水平滚动
- c# - 我无意中为命名空间和类名使用了相同的名称,并且需要重命名其中一个的所有实例
- android - 有办法重写android @string 行为吗?
- javascript - 如何在 3D 立方体的顶部显示坐标值 three.js
- python - Pandas:获取最后一个、倒数第二个、倒数第二个月份的值
- c++ - Unix域套接字和写缓冲区溢出
- c# - 实现分页用户的更好方法
- extjs - 经典和现代的煎茶套餐
- github - 从 Marketplace 中“取消发布”GitHub Action 是如何工作的?可能吗?发布的版本安全吗?
- azure-devops - 如何为 Azure DevOps 代理设置一个不过期的令牌?