Слияние кода завершено, страница обновится автоматически
# coding:utf-8
import sys
import time
from base64 import b64encode
import ujson
import os
from PIL import Image
_ver = sys.version_info
is_py2 = (_ver[0] == 2)
is_py3 = (_ver[0] == 3)
if is_py2:
import httplib
if is_py3:
import http.client as httplib
class FaceService():
def __init__(self):
self.con_list = []
self.con_index = 0
self.server_list = []
def connect(self, server='127.0.0.1:8010'):
self.server_list.append(server)
con = httplib.HTTPConnection(server)
self.con_list.append(con)
def connect_all_server(self, server_list):
for server in server_list:
self.server_list.append(server)
self.con_list.append(httplib.HTTPConnection(server))
def infer(self, request_msg):
try:
cur_con = self.con_list[self.con_index]
cur_con.request('POST', "/FaceClassifyService/inference",
request_msg, {"Content-Type": "application/json"})
response = cur_con.getresponse()
response_msg = response.read()
#print(response_msg)
response_msg = ujson.loads(response_msg)
self.con_index += 1
self.con_index = self.con_index % len(self.con_list)
return response_msg
except BaseException as err:
del self.con_list[self.con_index]
print(err)
if len(self.con_list) == 0:
print('All server failed')
return 'fail'
else:
self.con_index = 0
return 'retry'
def encode(self, images):
request = []
for image in range(images):
request.append(b64encode(image).decode('ascii'))
#request
request = {"base64_string": request}
request_msg = ujson.dumps(request)
response_msg = self.infer(request_msg)
result = []
for msg in response_msg["instance"]:
result.append(msg["embedding"])
#request end
return result
def close(self):
for con in self.con_list:
con.close()
def test():
with open('./data/00000000.jpg', 'rb') as f:
image = f.read()
bc = FaceService()
bc.connect('127.0.0.1:8010')
result = bc.encode([image])
print(result[0])
bc.close()
if __name__ == '__main__':
test()
Неприемлемый контент может быть отображен здесь и не будет показан на странице. Вы можете проверить и изменить его с помощью соответствующей функции редактирования.
Если вы подтверждаете, что содержание не содержит непристойной лексики/перенаправления на рекламу/насилия/вульгарной порнографии/нарушений/пиратства/ложного/незначительного или незаконного контента, связанного с национальными законами и предписаниями, вы можете нажать «Отправить» для подачи апелляции, и мы обработаем ее как можно скорее.