python发送请求给服务器参数传递方式以及服务器响应方式

python发送请求给服务器参数传递方式以及服务器响应方式

关于json相关内容参考

1、(一)

客户端请求方式:
如下:其中image_crop是ndarray类型的图像片段列表,传输前利用tolist()方法转换成了list格式

python发送请求给服务器参数传递方式以及服务器响应方式
服务器端接收并响应方式:
python发送请求给服务器参数传递方式以及服务器响应方式

; 2、利用Python进行图片发送与接收的两种方法—包含客户端和服务器端代码

1、方式一:第一种方法 opencv、requests、flask,此方法比较耗费时间 600毫秒左右

第一种方法 opencv、requests、flask,此方法比较耗费时间 600毫秒左右
客户端代码:

import cv2
import json
import requests

img = cv2.imread("/home/aqonvs.jpg")
res = {"image": str(img.tolist()).encode('base64')} # img是ndarray,无法直接用base64编码,否则会报错
_ = requests.post("http://192.71.30.172:8081", data=json.dumps(res))

客户端代码:

from flask import request, Flask
import json
import numpy as np
import time
import cv2

app = Flask(__name__)

@app.route("/", methods=['POST'])
def get_frame():
    start_time = time.time()
    res = json.loads(request.data)
    frame = eval(res["image"].decode("base64")) # dtype为int32
    frame = np.array(frame, dtype=np.uint8)
    cv2.imwrite('/home/tmp.jpg',frame)
    duration = time.time() - start_time
    print('duration:[%.0fms]' % (duration*1000))
    return '0000'

if __name__ == "__main__":

app.run("192.71.30.172", port=8081) #端口为8081

2、方式二: 直接利用文件传输 时间在10毫秒以内

客户端代码:

import requests

url = "xxxxx"
str000='/home/aqonvs.jpg'
newname = str000.split('/')
print(newname[len(newname)-1])
files = {'file':(newname,open('/home/aqonvs.jpg','rb'),'image/jpg')}
r = requests.post(url,files = files)
result = r.text
print(result)

服务器端代码:

from flask import request, Flask
import time
import os

app = Flask(__name__)

@app.route("/", methods=['POST'])
def get_frame():
    start_time = time.time()
    upload_file = request.files['file']
    old_file_name = upload_file.filename
    if upload_file:
        file_path = os.path.join('/home/local/upload/', old_file_name)
        upload_file.save(file_path)
        print "success"
        print('file saved to %s' % file_path)
        duration = time.time() - start_time
        print('duration:[%.0fms]' % (duration*1000))
        return 'success'
    else:
        return 'failed'

if __name__ == "__main__":

app.run("127.0.0.1", port=5000)

Original: https://blog.csdn.net/guoqingru0311/article/details/123750399
Author: 郭庆汝
Title: python发送请求给服务器参数传递方式以及服务器响应方式

原创文章受到原创版权保护。转载请注明出处:https://www.johngo689.com/746887/

转载文章受原作者版权保护。转载请注明原作者出处!

(0)

大家都在看

亲爱的 Coder【最近整理,可免费获取】👉 最新必读书单  | 👏 面试题下载  | 🌎 免费的AI知识星球