利用flask进行图片数据传输

本文介绍了一个使用Flask框架搭建的服务端应用,该应用能够接收客户端上传的图片,进行图像识别并返回识别结果。服务端通过加载预训练模型,对接收的图片进行解码和预测,最终将识别的类别和概率以JSON格式返回。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

服务端

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()

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值