我使用kairos api进行人脸识别。我试图注册图像。documentation这里说它也接受base64编码照片。所以我用base 64编码了图像,我得到以下错误
{"Errors":[{"ErrCode":5000,"Message":"an invalid image was sent must be jpg or p
ng format"}]}
我使用以下python代码发送请求
import cv2
import requests
import base64
import json
image=cv2.imread('Face-images/Subject 9.jpg')
encoded_string =base64.b64encode(image)
payload2= {"image":encoded_string ,"subject_id":"Abhishek","gallery_name":"MyGallery"}
headers={'Content-Type':'application/json','app_id':'app_id','app_key':'app_key'}
r = requests.post('https://api.kairos.com/enroll',headers=headers,data=json.dumps(payload2),verify=False)
print r.text
任何帮助将不胜感激
答案 0 :(得分:1)
不要对照片进行编码。可能他们接受了,但更难通过。检查此解决方案:
import requests
files = {"image": (filename,open(location+'/'+filename,"rb"))}
payload= {"subject_id":"Abhishek",
"gallery_name":"MyGallery"}
headers={'Content-Type':'application/json',
'app_id':'app_id',
'app_key':'app_key'}
response = requests.post('https://api.kairos.com/enroll',headers=headers,data=payload,files=files,verify=False)
print response.text
答案 1 :(得分:1)
我找到了问题的答案。您可以尝试不使用cv2读取图像,而是使用简单的原始二进制文件。 cv2将它读入一个numpy数组,你正在编码一个numpy数组。阅读就像一个简单的文件对我有用,如下面
with open ('messi.jpg','rb') as imgFh:
img = imgFh.read()
答案 2 :(得分:1)
试试这个。
import cv2
import requests
import base64
import json
encoded_string = base64.b64encode(open("Face-images/Subject 9.jpg",
'r').read())
payload_dict = {
"image":encoded_string,
"subject_id": "Abhishek",
"gallery_name": "MyGallery"
}
payload = json.dumps(payload_dict)
headers={
'Content-Type':'application/json',
'app_id':'app_id',
'app_key':'app_key'
}
request = Request('https://api.kairos.com/enroll', data=payload,
headers=headers)
response_body = urlopen(request).read()
print(response_body)