服务端
from flask import request
from flask import Flask
import json
from predict import *
import cv2
import base64
from gevent.pywsgi import WSGIServer
app = Flask(__name__)
def load_model():
predict = PREDICT(config)
return predict
# 定义路由
@app.route("/photo", methods=['POST'])
def get_frame():
# 接收图片
# upload_file = json.loads(request.json)
# print(upload_file['file'])
# upload_file=request.form['file']
filename=request.get_json()
# print(filename)
# print(type(filename)=='str')
if (isinstance(filename,str)):
filname1=json.loads(filename)
tmp=filname1['file']
img = base64.b64decode(str(tmp))
image_data = np.fromstring(img, np.uint8)
image_data = cv2.imdecode(image_data, cv2.IMREAD_COLOR)
# cv2.imwrite('01.png', image_data)
else:
tmp=filename['file']
img = base64.b64decode(str(tmp))
image_data = np.fromstring(img, np.uint8)
image_data = cv2.imdecode(image_data, cv2.IMREAD_COLOR)
# cv2.imwrite('01.png', image_data)
# fff=json.load(filename)
# print(upload_file)
# img=cv2.imread(tmp)
# cv2.imwrite("222.jpg",img)
className, prob = model.PredictImage(image_data)
# print(className,prob)
dic[className]=prob
json_info = json.dumps(dic, ensure_ascii=False)
return json_info
if __name__ == "__main__":
dic = {}
model=load_model()
# print("初始化完成")
app.run(host='0.0.0.0',port=5000)
## Serve the app with gevent
# http_server = WSGIServer(('0.0.0.1',5000),app)
# http_server.serve_forever()
客户端
import requests
import base64
import json
# API地址
url = "http://172.16.50.80:5000/photo"
# 图片地址
file_path = '/home/src/falsk/den.png'
# 图片名
# file_name = file_path.split('/')[-1]
# 二进制打开图片
# file = open(file_path, 'rb')
with open('D:/Image/baiban/test/den.png', 'rb') as f:
img = base64.b64encode(f.read()).decode()
image = []
image.append(img)
# 拼接参数
files = {'file': image}
fff=json.dumps(files, ensure_ascii=False)
# 发送post请求到服务器端json.dumps(files, ensure_ascii=False)
# r = requests.post(url, json=json.dumps(files, ensure_ascii=False))
r = requests.post(url, json=fff)
print(r.status_code)
print(r.content)
print(type(json.dumps(files, ensure_ascii=False)))
# 获取服务器返回的图片,字节流返回
# result = r.content
# 字节转换成图片
# img = base64.b64decode(result)
# file = open('test.jpg', 'wb')
# file.write(img)
# file.close()