Skip to content

Instantly share code, notes, and snippets.

@thekitp
Forked from kylehounslow/client.py
Created February 9, 2018 09:28
Show Gist options
  • Save thekitp/a02ceee0982cdfb78755c7f097b418c2 to your computer and use it in GitHub Desktop.
Save thekitp/a02ceee0982cdfb78755c7f097b418c2 to your computer and use it in GitHub Desktop.

Revisions

  1. @kylehounslow kylehounslow created this gist May 8, 2017.
    20 changes: 20 additions & 0 deletions client.py
    Original file line number Diff line number Diff line change
    @@ -0,0 +1,20 @@
    import requests
    import json
    import cv2

    addr = 'http://localhost:5000'
    test_url = addr + '/api/test'

    # prepare headers for http request
    content_type = 'image/jpeg'
    headers = {'content-type': content_type}

    img = cv2.imread('lena.jpg')
    # encode image as jpeg
    _, img_encoded = cv2.imencode('.jpg', img)
    # send http request with image and receive response
    response = requests.post(test_url, data=img_encoded.tostring(), headers=headers)
    # decode response
    print json.loads(response.text)

    # expected output: {u'message': u'image received. size=124x124'}
    31 changes: 31 additions & 0 deletions server.py
    Original file line number Diff line number Diff line change
    @@ -0,0 +1,31 @@
    from flask import Flask, request, Response
    import jsonpickle
    import numpy as np
    import cv2

    # Initialize the Flask application
    app = Flask(__name__)


    # route http posts to this method
    @app.route('/api/test', methods=['POST'])
    def test():
    r = request
    # convert string of image data to uint8
    nparr = np.fromstring(r.data, np.uint8)
    # decode image
    img = cv2.imdecode(nparr, cv2.IMREAD_COLOR)

    # do some fancy processing here....

    # build a response dict to send back to client
    response = {'message': 'image received. size={}x{}'.format(img.shape[1], img.shape[0])
    }
    # encode response using jsonpickle
    response_pickled = jsonpickle.encode(response)

    return Response(response=response_pickled, status=200, mimetype="application/json")


    # start flask app
    app.run(host="0.0.0.0", port=5000)