python发送请求给服务器参数传递方式以及服务器响应方式
1、(一)2、利用Python进行图片发送与接收的两种方法---包含客户端和服务器端代码1、方式一:第一种方法 opencv、requests、flask,此方法比较耗费时间 600毫秒左右2、方式二: **直接利用文件传输 时间在10毫秒以内**关于json相关内容参考
1、(一)
客户端请求方式:
如下:其中image_crop是ndarray类型的图像片段列表,传输前利用tolist()方法转换成了list格式
服务器端接收并响应方式:
2、利用Python进行图片发送与接收的两种方法—包含客户端和服务器端代码
1、方式一:第一种方法 opencv、requests、flask,此方法比较耗费时间 600毫秒左右
第一种方法 opencv、requests、flask,此方法比较耗费时间 600毫秒左右
客户端代码:
import cv2import jsonimport requestsimg = 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, Flaskimport jsonimport numpy as npimport timeimport cv2app = 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为int32frame = np.array(frame, dtype=np.uint8)cv2.imwrite('/home/tmp.jpg',frame)duration = time.time() - start_timeprint('duration:[%.0fms]' % (duration*1000))return '0000'if __name__ == "__main__":app.run("192.71.30.172", port=8081) #端口为8081
2、方式二:直接利用文件传输 时间在10毫秒以内
客户端代码:
import requestsurl = "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.textprint(result)
服务器端代码:
from flask import request, Flaskimport timeimport osapp = Flask(__name__)@app.route("/", methods=['POST'])def get_frame():start_time = time.time()upload_file = request.files['file']old_file_name = upload_file.filenameif 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_timeprint('duration:[%.0fms]' % (duration*1000))return 'success'else:return 'failed'if __name__ == "__main__":app.run("127.0.0.1", port=5000)
如果觉得《python发送请求给服务器参数传递方式以及服务器响应方式》对你有帮助,请点赞、收藏,并留下你的观点哦!