Spaces:
Sleeping
Sleeping
| from flask import Flask, request, jsonify | |
| import os | |
| import importlib.util | |
| from datetime import datetime | |
| from predict_task1 import Predictor | |
| from id_mapping import mapping | |
| #from show_annotation import start_annotation_process | |
| #from multiprocessing import Process, Queue | |
| #import cv2 | |
| from show_stitched import * | |
| app = Flask(__name__) | |
| config_dir = os.path.abspath(os.path.dirname(__file__)) | |
| config_path = os.path.join(config_dir, 'PC_CONFIG.py') | |
| spec = importlib.util.spec_from_file_location("PC_CONFIG", config_path) | |
| PC_CONFIG = importlib.util.module_from_spec(spec) | |
| spec.loader.exec_module(PC_CONFIG) | |
| HOST = PC_CONFIG.HOST | |
| PORT = PC_CONFIG.IMAGE_REC_PORT | |
| UPLOAD_FOLDER = os.path.join(PC_CONFIG.FILE_DIRECTORY,"image-rec","images") | |
| app.config['UPLOAD_FOLDER'] = UPLOAD_FOLDER | |
| def process_file(file_path, direction, task_type): | |
| predictor = Predictor() | |
| print("File received and saved successfully.") | |
| print(f"Direction received: {direction}") | |
| print(f"Task type received: {task_type}") | |
| startTime = datetime.now() | |
| class_name, results, detection_id = predictor.predict_id(file_path, task_type) # Perform prediction | |
| #show_annotation_queue.put((file_path, results, detection_id)) | |
| class_id = str(mapping.get(class_name, -1)) | |
| endTime = datetime.now() | |
| totalTime = (endTime - startTime).total_seconds() | |
| print(f"Predicted ID: {class_id}") | |
| print(f"Time taken for Predicting Image = {totalTime} s") | |
| return class_id | |
| def server_status(): | |
| return jsonify({'status': 'OK'}) | |
| def upload_file(): | |
| if 'file' not in request.files: | |
| return jsonify({'error': 'No file part'}), 400 | |
| file = request.files['file'] | |
| direction = request.form['direction'] | |
| task_type = request.form['task_type'] | |
| if file.filename == '': | |
| return jsonify({'error': 'No selected file'}), 400 | |
| if file: | |
| filename = os.path.basename(file.filename) | |
| file_path = os.path.join(app.config['UPLOAD_FOLDER'], filename) | |
| file.save(file_path) | |
| # image = cv2.imread(file_path) | |
| # cv2.imshow("Uploaded Image", image) | |
| # cv2.waitKey(0) # Wait until a key is pressed | |
| # cv2.destroyAllWindows() # Close the window | |
| # Process the file and predict | |
| class_id = process_file(file_path, direction, task_type) | |
| return jsonify({'message': 'File successfully uploaded', 'predicted_id': class_id}), 200 | |
| def display_stitched(): | |
| showAnnotatedStitched() | |
| return jsonify({'display_stitched': 'OK'}) | |
| if __name__ == '__main__': | |
| # show_annotation_queue = Queue() | |
| # process = Process(target=start_annotation_process, args=(show_annotation_queue,)) | |
| # process.start() | |
| print() | |
| print(f"UPLOAD FOLDER: {UPLOAD_FOLDER}") | |
| # Port 5000 if free | |
| ''' | |
| try: | |
| app.run(host=HOST, port=PORT, debug=False) | |
| except: | |
| print('Unable to Connect to PC_CONFIG Host and Port. Switching to 0.0.0.0:4000.') | |
| app.run(host='0.0.0.0', port=4000, debug=True) | |
| ''' | |
| # Run on Port 4000 | |
| app.run(host='0.0.0.0', port=4000, debug=True) | |
| #process.join() | |