繁体   English   中英

如何通过 http 使用 requests 模块和 Z9784E21C7B2AFDD678Z87 发布请求发送 numpy 数组或 pytorch 张量

[英]how to send an numpy array or a pytorch Tensor through http post request using requests module and Flask

我有一张图片,我想将它发送到服务端。 我正在使用requests模块执行简单的发布请求,如下所示(信息是字典):

    import requests

    print(type(info["array_image"]))
    print(type(info["visual_features"]))
    response = requests.post("url", data=info)

output:

<class 'numpy.ndarray'>
<class 'torch.Tensor'>

在服务器端,我至少尝试将它们作为 arrays 接收:

from flask import Flask, request

@app.route('/path', methods=['POST'])
def function_name():
    visual_features = request.form['visual_features']
    array_image = request.form['array_image']
    print(type(array_image))
    print(type(visual_features))

output:

<class 'str'>
<class 'str'>

我想得到一个字节数组来构建图像,但我得到的是一个字符串......如果我没有找到一种方法,我将在 bas64 中编码 arrays 然后在服务器中对其进行解码......

您可以尝试将您的数据转换为正确的 JSON 或使用 Python泡菜模块,或者如果您有您提到的图像,您可以将其作为文件(多部分请求)发送到服务器,如此处的示例所示

感谢@praba230890 给了我一个简单易学的例子。

我仍然会在这里写下解决方案,因为提供的链接不完全适合我的情况。

import pickle
import io

array_image = pickle.dumps(info["array_image"])
stream = io.BytesIO(array_image)
files = {"array_image": stream}

info["array_image"] = None

response = http.post("url", data=info, files=files)

在服务器端:

from flask import Flask, request

@app.route('/path', methods=['POST'])
def function_name():
    image = request.files.get('array_image')
    array_image = image.read()

如果要从文件中获取图像,则:

requests.post("http://localhost:5000/predict",
                 files={"file": open('<PATH/TO/.jpg/FILE>/cat.jpg','rb')})

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM