【问题标题】:Adding a local path to Microsoft Face API by Python通过 Python 添加到 Microsoft Face API 的本地路径
【发布时间】:2018-02-07 14:04:00
【问题描述】:

我在一个小型项目中使用 Microsoft Face API,我试图在本地系统的 .jpg 文件中检测人脸(例如,存储在目录 D:\Image\abc.jpg)

示例代码,如他们的documentation 所示,在来自在线资源的 url 上运行良好,但似乎不适用于本地路径地址。我已尝试执行以下操作:

dict = "{ 'url' : 'file:///D:/Image/abc.jpg'}"

但它似乎不起作用。似乎有一种Java的方法(使用FileEntity)。我想知道是否有Python的方法。我是编码新手。我真的希望有人可以帮助我。我正在使用 Python3。

【问题讨论】:

  • 向 API 发送本地文件名是行不通的,您需要发送实际的文件数据。那些文档说您需要从“application/json”更改请求 Content-Type 标头到“application/octet-stream”,并在请求正文中发送文件的二进制数据。 this MSDN page 上有一个例子。那里的代码不是很好,但它应该给你一个大致的想法。

标签: python microsoft-cognitive


【解决方案1】:

Microsoft 无法从您的本地文件系统读取文件,因为它们不像从 URL 访问图像那样在 Internet 上公开。因此,您需要将文件发送到 Microsoft Face API 以供他们访问。

import requests

headers = {'Content-Type': 'application/octet-stream', 
           'Ocp-Apim-Subscription-Key': <token>}
url = 'https://api.projectoxford.ai/face/v1.0/detect'

# Gets the binary file data so we can send it to MCS
data = open('file:///D:/Image/abc.jpg', 'rb')
requests.post(url, headers=headers, data=data)

【讨论】:

  • 嗨!你能帮助我吗?我复制了您的代码,但出现错误: OSError: [Errno 22] Invalid argument: 'file:///D:\\face.jpg'
  • @True-hacker 将打开的 url 更改为:data = open('D:/Image/abc.jpg', 'rb').read() requests.post(url, headers=headers, data=data) 您可以阅读更多详细信息here
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2020-06-27
  • 2018-09-24
  • 1970-01-01
  • 2012-01-26
  • 2014-10-20
  • 1970-01-01
相关资源
最近更新 更多