# # Copyright 2020 Huawei Technologies Co., Ltd. # # Licensed under the Apache License, Version 2.0 (the "License"); # you may not use this file except in compliance with the License. # You may obtain a copy of the License at # # http://www.apache.org/licenses/LICENSE-2.0 # # Unless required by applicable law or agreed to in writing, software # distributed under the License is distributed on an "AS IS" BASIS, # WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. # See the License for the specific language governing permissions and # limitations under the License. # import config from flask_sslify import SSLify from flask import Flask, Response from flask_cors import CORS class model_info(): def __init__(self, model_name): self.model = 'model_info/MobileNetSSD_deploy.caffemodel' self.model_name = model_name self.prototxt = 'model_info/MobileNetSSD_deploy.prototxt' self.confidenceLevel = 80 def get_model(self): return self.model def get_prototxt(self): return self.prototxt def get_model_name(self): return self.model_name def set_confidence_level(self, confidenceLevel): self.confidenceLevel = confidenceLevel def get_confidence_level(self): return self.confidenceLevel def update_model(self, model, prototxt, model_name): self.prototxt = prototxt self.model = model self.model_name = model_name # Labels of Network. classNames = {0: 'background', 1: 'aeroplane', 2: 'bicycle', 3: 'bird', 4: 'boat', 5: 'bottle', 6: 'bus', 7: 'car', 8: 'cat', 9: 'chair', 10: 'cow', 11: 'diningtable', 12: 'dog', 13: 'horse', 14: 'motorbike', 15: 'person', 16: 'pottedplant', 17: 'sheep', 18: 'sofa', 19: 'train', 20: 'tvmonitor'} app = Flask(__name__) CORS(app) sslify = SSLify(app) app.config['JSON_AS_ASCII'] = False app.config['UPLOAD_PATH'] = '/usr/app/images/' app.config['supports_credentials'] = True app.config['CORS_SUPPORTS_CREDENTIALS'] = True app.config['MAX_CONTENT_LENGTH'] = 16 * 1024 * 1024 ALLOWED_EXTENSIONS = set(['png', 'jpg', 'jpeg']) count = 0 listOfMsgs = [] def allowed_file(filename): return '.' in filename and filename.rsplit('.', 1)[1].lower()\ in ALLOWED_EXTENSIONS @app.route('/mep/v1/obj_detection/uploadModel', methods=['POST']) def uploadModel(): """ upload model :return: html file """ return Response("success") @app.route('/mep/v1/obj_detection/confidencelevel', methods=['POST']) def setConfidenceLevel(): """ Trigger the video_feed() function on opening "0.0.0.0:5000/video_feed" URL :return: """ return Response("success") @app.route('/mep/v1/obj_detection/detect', methods=['GET']) def Obj_Detection(): """ Trigger the Obj detection on input frame/image Input: frame/image :return: imposed frame, count, Obj type, time taken by detection """ return Response("success") def start_server(handler): app.logger.addHandler(handler) if config.ssl_enabled: context = (config.ssl_certfilepath, config.ssl_keyfilepath) app.run(host=config.server_address, debug=True, ssl_context=context, threaded=True, port=config.server_port) else: app.run(host=config.server_address, debug=True, threaded=True, port=config.server_port)