1. Apifox ソフトウェアを使用してインターフェイスを作成します
バックエンドに画像を送りたい場合は以下の方法が考えられます パラメータのみの場合はParamsにパラメータを記述します 下図のようにインターフェースを作成し、後ほどPythonの設定を行った上
でリクエストを送信できます:
2. Pythonインターフェース
from io import BytesIO
import numpy as np
from PIL import Image
from flask import Flask, request
from flask import Flask
import matplotlib.pyplot as plt
from flask import render_template
import json
import base64
import cv2
import os
app = Flask(__name__)
from PIL import Image
from deeplab import DeeplabV3
@app.route("/test", methods=['POST'])
def check():
# 默认返回内容
return_dict = {
'code': '200', 'message': '处理成功', 'result': None, 'label': None, 'ratio': None}
# 接收图像
data_file = request.files.get('MyName')
# 接收id
id = request.form.get("Id")
image = Image.open(data_file)
deeplab = DeeplabV3()
result, ratio = deeplab.detect_image(image)
result_ratio = [ratio]
# 返回图像
buffer = BytesIO()
result.save(buffer, "PNG") # 将Image对象转为二进制存入buffer。因BytesIO()是在内存中操作,所以实际是存入内存
buf_bytes = buffer.getvalue() # 从内存中取出bytes类型的图片
base64_data2 = 'data:image/png;base64,' + str(base64.b64encode(buf_bytes), 'utf-8')
return_dict['label'] = base64_data2
return_dict['ratio'] = result_ratio
return json.dumps(return_dict, ensure_ascii=False)
if __name__ == "__main__":
app.run(debug=True)
3. テスト
構成後、「送信」をクリックして予測結果を取得します。これをブラウザに直接コピーして表示できます。