import sys sys.path.append('.') import os import numpy as np import base64 import json import io from PIL import Image, ExifTags from flask import Flask, request, jsonify from opyidrecog import getHWID from opyidrecog import setLicenseKey from opyidrecog import initSDK from opyidrecog import processImage licenseKeyPath = "license.txt" license = os.environ.get("LICENSE_KEY") if license is None: try: with open(licenseKeyPath, 'r') as file: license = file.read().strip() except IOError as exc: print("failed to open license.txt: ", exc.errno) print("License Key: ", license) hwid = getHWID() print("HWID: ", hwid.decode('utf-8')) ret = setLicenseKey(license.encode('utf-8')) print("Set License: ", ret) ret = initSDK("model".encode('utf-8')) print("Init: ", ret) app = Flask(__name__) @app.route('/process_image', methods=['POST']) def process_image(): base64_image1 = "" base64_image2 = "" try: file1 = request.files['image1'] base64_image1 = base64.b64encode(file1.read()).decode('utf-8') except: result = "Failed to open image1" response = jsonify({"resultCode": "Error", "result": result}) response.status_code = 200 response.headers["Content-Type"] = "application/json; charset=utf-8" return response try: file2 = request.files['image2'] base64_image2 = base64.b64encode(file2.read()).decode('utf-8') except: base64_image2 = "" result = processImage(base64_image1.encode('utf-8'), base64_image2.encode('utf-8')) result_dict = json.loads(result.decode('utf-8')) response = jsonify({"resultCode": "Ok", "result": result_dict}) response.status_code = 200 response.headers["Content-Type"] = "application/json; charset=utf-8" return response @app.route('/process_image_base64', methods=['POST']) def process_image_base64(): base64_image1 = "" base64_image2 = "" try: content = request.get_json() base64_image1 = content['image1_base64'] except: result = "Failed to parse base64" response = jsonify({"resultCode": "Error", "result": result}) response.status_code = 200 response.headers["Content-Type"] = "application/json; charset=utf-8" return response try: content = request.get_json() base64_image2 = content['image2_base64'] except: base64_image2 = "" image_np = np.asarray(image) result = processImage(image_np, image_np.shape[1], image_np.shape[0]) result = processImage(base64_image1.encode('utf-8'), base64_image2.encode('utf-8')) result_dict = json.loads(result.decode('utf-8')) response = jsonify({"resultCode": "Ok", "result": result_dict}) response.status_code = 200 response.headers["Content-Type"] = "application/json; charset=utf-8" return response if __name__ == '__main__': port = int(os.environ.get("PORT", 9000)) app.run(host='0.0.0.0', port=port)