2016-12-26 103 views
0

我想使用Microsoft的Face API识别一组人脸部。我已经阅读了他们的文档,并且我编写了这些代码,但它没有按预期工作。它显示了一些错误。如何使用Microsoft Face API识别组图片中的脸部

from projectoxford import Client,Face 
print('----- Setting Environment to use Face API -----') 
client = Client('MY API KEY') 
personGroup = 'friends' 
print('----- Uploading Sam -----') 
storage.child('images/sam.jpg').put('/home/parth/Downloads/sam.jpg') 
print('----- Done Uploading -----') 
sam = storage.child('images/sam.jpg').get_url(token=None) 
print(sam) 
print('----- Uploading Dev -----') 
storage.child('images/dev.jpg').put('/home/parth/Downloads/devansh.jpg') 
print('----- Done Uploading -----') 
dev = storage.child('images/dev.jpg').get_url(token=None) 
print(dev) 
print('----- Uploading Main -----') 
storage.child('images/main.jpg').put('/home/parth/Downloads/main.jpg') 
print('----- Done Uploading -----') 
main = storage.child('images/main.jpg').get_url(token=None) 
print(main) 
print('----- Detecting Face Sam -----') 
x = client.face.detect({'url': sam}) 
print(x) 
sam_faceId = x[0]['faceId'] 
client.face.personGroup.createOrUpdate(personGroup, 'friends') 
client.face.person.createOrUpdate(personGroup, [sam_faceId], 'Saumil') 
client.face.personGroup.trainAndPollForCompletion(personGroup) 
detectResults = client.face.detect({'url': main}) 
faceIds = [] 
for result in detectResults: 
    faceIds.append(result['faceId']) 

''' 
Identification Method 
''' 
identifyResults = client.face.identify(personGroup, faceIds) 
for result in identifyResults: 
    for candidate in result['candidates']: 
     confidence = candidate['confidence'] 
     personData = client.face.person.get(personGroup, candidate['personId']) 
     name = personData['name'] 
     print('identified {0} with {1}% confidence'.format(name, str(float(confidence) * 100))) 
client.face.personGroup.delete(personGroup) 

现在thorws这样的:

Traceback (most recent call last): 
    File "att3.py", line 55, in <module> 
    x = client.face.detect({'url': sam}) 
    File "/usr/local/lib/python2.7/dist-packages/projectoxford/Face.py", line 56, in detect 
    return Base._postWithOptions(self, _detectUrl, options, params) 
    File "/usr/local/lib/python2.7/dist-packages/projectoxford/Base.py", line 87, in _postWithOptions 
    return Base._invoke(self, call) 
    File "/usr/local/lib/python2.7/dist-packages/projectoxford/Base.py", line 45, in _invoke 
    raise Exception('status {0}: {1}'.format(str(response.status_code), response.text)) 
Exception: status 404: { "statusCode": 404, "message": "Resource not found" } 

我不知道为什么它会发生。任何解决方案或建议我做错了什么。

+0

从你的打印语句判断你的代码是在Python 3中,但是追溯是指Python 2.7。尝试使用Python3运行它

+0

@whats_done_is这种类型的打印语句在Python 2.7中是允许的。使用** Python3 **运行当前脚本的结果相同。 –

回答

0

x = client.face.detect({'url': sam})正尝试访问字面网址“url”,因为您将其作为字符串赋予它。我假设你打算用这个代替: x = client.face.detect({main: sam}),因为你调用了get_url(token=None)并将结果存储到main变量中。

+0

不,我想从主图像中识别山姆的脸部。主要变量包含url指的是主图像。 –