我正在尝试使用在线API检测面部,这需要使用multipart / form-data以二进制格式上传图像文件。我找到了一种将图像转换为二进制的方法。现在,对于上传部分,我是否有必要将这个二进制数据写入文件?此外,我写了以下代码,并收到错误 -
ValueError:无法编码非二元组的对象
我写的代码如下 -
import requests
import pprint
from toBinary import conv
img='sample.jpg'
img=conv(img)
params={
'api_key':<api key>,
'api_secret':<api secret>,
}
print("1.-")
r = requests.post(url='https://api-
us.faceplusplus.com/facepp/v3/detect',data=params,files=img)
for face in range(0,len(r.json()['faces'])):
pprint.pprint(r.json()['faces'][face]['face_token'])
img='01.jpg'
img=conv(img)
print("2-")
s = requests.post(url='https://api-
us.faceplusplus.com/facepp/v3/detect',data=params,files=img)
for face in range(0,len(s.json()['faces'])):
pprint.pprint(s.json()['faces'][face]['face_token'])
toBinary类如下 -
import binascii
def conv(image_file):
try:
fin = open(image_file, "rb")
data = fin.read()
fin.close()
except IOError:
print("Image file %s not found" % image_file)
raise SystemExit
hex_str = str(binascii.hexlify(data))
hex_list = []
bin_list = []
for ix in range(2, len(hex_str)-1, 2):
hex = hex_str[ix]+hex_str[ix+1]
hex_list.append(hex)
bin_list.append(bin(int(hex, 16))[2:])
bin_str = "".join(bin_list)
return(bin_str)
编辑 - 添加了toBinary类的代码,更改了图像的来源。
答案 0 :(得分:0)
我还没有检查过这个解决方案
但您可以尝试使用此https://github.com/FacePlusPlus/facepp-python-sdk
将此文件复制到您的项目https://github.com/FacePlusPlus/facepp-python-sdk/blob/master/facepp.py
然后像这样使用它:
from facepp import API
api = API(key, secret)
api.detection.detect(url=url)