diff --git a/adapter.py b/adapter.py index ac9af70c..f717599d 100644 --- a/adapter.py +++ b/adapter.py @@ -10,27 +10,22 @@ from runner import find_homography, warp_board from tensor_classifier import predict_board -while True: - try: - stdin = sys.stdin.readline() - stdin_decoded = base64.b64decode(stdin) - img_array = np.frombuffer(stdin_decoded, dtype=np.uint8) - camera_img = cv2.imdecode(img_array, flags=cv2.COLOR_BGR2RGB) - camera_img = cv2.cvtColor(camera_img, cv2.COLOR_BGR2RGB) +stdin = sys.stdin.readline() +stdin_decoded = base64.b64decode(stdin) +img_array = np.frombuffer(stdin_decoded, dtype=np.uint8) +camera_img = cv2.imdecode(img_array, flags=cv2.COLOR_BGR2RGB) +camera_img = cv2.cvtColor(camera_img, cv2.COLOR_BGR2RGB) - # def do_everything: - homography = find_homography(camera_img) - warped_board = warp_board(camera_img, homography) - occupied_squares = find_occupied_squares(warped_board) - board = predict_board(occupied_squares) +# def do_everything: +homography = find_homography(camera_img) +warped_board = warp_board(camera_img, homography) +occupied_squares = find_occupied_squares(warped_board) +board = predict_board(occupied_squares) - # Finally, output to stdout for unity to read - result = { - "homography": homography.tolist(), - "board": board.to_array, - } +# Finally, output to stdout for unity to read +result = { + "homography": homography.tolist(), + "board": board.to_array, +} - print(json.dumps(result)) - exit() # TODO - except Exception as e: - print(e) +print(json.dumps(result)) diff --git a/web.py b/web.py new file mode 100644 index 00000000..5b80fefd --- /dev/null +++ b/web.py @@ -0,0 +1,41 @@ +import base64 + +import cv2 +import numpy as np +from flask import Flask, jsonify, request + +from main import find_occupied_squares +from runner import find_homography, warp_board +from tensor_classifier import predict_board + +app = Flask(__name__) + + +@app.route("/", methods=["POST"]) +def process(): + data = request.get_json(force=True) + + decoded = base64.b64decode(data["img"]) + img_array = np.frombuffer(decoded, dtype=np.uint8) + camera_img = cv2.imdecode(img_array, flags=cv2.COLOR_BGR2RGB) + camera_img = cv2.cvtColor(camera_img, cv2.COLOR_BGR2RGB) + + # def do_everything: + homography = find_homography(camera_img) + warped_board = warp_board(camera_img, homography) + occupied_squares = find_occupied_squares(warped_board) + board = predict_board(occupied_squares) + + # Finally, output for unity to read + return jsonify({ + "homography": homography.tolist(), + "board": board.to_array, + }) + + +def main(): + app.run(host='0.0.0.0', debug=True) + + +if __name__ == '__main__': + main()