python中將圖片從客戶端(client)推到(POST)到服務器端(server)的方法

從客戶端推json到服務器端的工做能夠用flask很容易作到,那麼須要推送圖片的話能夠先將圖片存到json中再進行操做。python

服務器端

from flask import request, Flask
import json
import numpy as np
app = Flask(__name__)

@app.route("/frame", methods=['POST'])
def get_frame():
     res = request.json  # 獲取推過來的json,也能夠用data而後轉換成json
    # res = json.loads(request.data)
    frame = eval(res["image"].decode("base64"))   # dtype爲int32
    frame = np.array(frame, dtype=np.uint8)
    cv2.imshow("frame", frame)
    cv2.waitkey(0)

if __name__ == "__main__":
    app.run("0.0.0.0", port=8081)  #端口爲8081

PS:關於request函數獲取的內容能夠具體參考這裏json

客戶端

1. 將圖片存入json

import cv2
import json

img = cv2.imread("/your/image")
res = {"image": str(img.tolist()).encode('base64')}  # img是ndarray,沒法直接用base64編碼,不然會報錯

2. 推送json到服務器端

import requests

_ = requests.post("/your/server/url", json=res)    # 好比這裏/http://192.168.1.112:8081/frame
# _ = requests.post("/your/server/url", data=json.dumps(res))  # 若是服務器端獲取的方式爲data

參考

  1. requests: http://docs.python-requests.org/en/master/user/quickstart/#more-complicated-post-requests
  2. flask request: http://flask.pocoo.org/docs/0.12/quickstart/#the-request-object
  3. https://stackoverflow.com/questions/9746303/how-do-i-send-a-post-request-as-a-json
  4. https://stackoverflow.com/questions/27837346/how-to-include-pictures-bytes-to-a-json-with-python-encoding-issue
  5. https://stackoverflow.com/questions/20001229/how-to-get-posted-json-in-flask
  6. https://stackoverflow.com/questions/10434599/how-to-get-data-received-in-flask-request
相關文章
相關標籤/搜索