+++ /dev/null
-
-import config
-from flask_sslify import SSLify
-from flask import Flask, request, jsonify, Response
-from flask_cors import CORS
-
-import json
-import requests
-import os
-import os.path
-from os import path
-import base64
-import sys
-
-app = Flask(__name__)
-CORS(app)
-sslify = SSLify(app)
-app.config['JSON_AS_ASCII'] = False
-app.config['INPUT_IMAGE_PATH'] = '/usr/app/input_image/'
-app.config['OUTPUT_IMAGE_PATH'] = '/usr/app/output_image/'
-
-app.config['MAX_CONTENT_LENGTH'] = 16 * 1024 * 1024
-ALLOWED_EXTENSIONS = set(['png', 'jpg', 'jpeg'])
-count = 0
-listOfPath = []
-listOfImages = []
-mock_func = 0
-# result_image_path = app.config['OUTPUT_IMAGE_PATH']
-
-listOfPath = ["beijinglab/camera1", "beijinglab/camera2",
- "beijinglab/camera3",
- "shenzhenlab/camera1", "shenzhenlab/camera2",
- "shenzhenlab/camera3",
- "shanghailab/camera1", "shanghailab/camera2",
- "shanghailab/camera3"]
-
-def path_exist(image_path):
- print('image path:',image_path)
-
- pathexist = 0
- for imagepath in listOfPath:
- print('image path in list:', imagepath)
- if (image_path == imagepath):
- print('image path match')
- pathexist = 1
- break
-
- return pathexist
-
-def get_images(abs_image_path):
- """
- preview images
-
- :return: result image
- """
- del listOfImages[:]
-
- arr = os.listdir(abs_image_path)
- for file in arr:
- print('image name:',abs_image_path + file)
-
- for image in arr:
- ## as base64 string
- with open(abs_image_path + image, "rb") as img_file:
- jpeg_bin = base64.b64encode(img_file.read())
- listOfImages.append(jpeg_bin)
-
- response = {'image01': listOfImages[0],
- 'image02': listOfImages[1],
- 'image03': listOfImages[2],}
- #'image04': listOfImages[3]}
- # 'image05': listOfImages[4],}
-
- return response
-
-def detection(input_image_path, output_image_path):
- """
- detection
-
- :return: detection status
- """
- cmd = 'cd tools' + ' && python inference.py --data_dir=' + \
- input_image_path + ' --save_dir=' + output_image_path + ' --GPU=0'
- print(cmd)
-
- os.system(cmd)
- return 1
-
-
-@app.route('/v1/pcb/preview/<EdgeLoc>/<cameraNum>', methods=['GET'])
-def preview_image(EdgeLoc, cameraNum):
- """
- preview images
-
- :return: result image
- """
- app.logger.info("Received message from ClientIP [" + request.remote_addr
- + "] Operation [" + request.method + "]" +
- " Resource [" + request.url + "]")
-
- image_path = EdgeLoc + '/' + cameraNum
- pathexist = path_exist(image_path)
- if pathexist == 0:
- response = {'image' : 'null'}
- print ('image path not exist:',image_path)
- return jsonify(response)
-
- abs_image_path = app.config['INPUT_IMAGE_PATH'] + image_path + '/'
- print('abs image path:',abs_image_path)
- response = get_images(abs_image_path)
-
- return jsonify(response)
-
-
-@app.route('/v1/pcb/resultimage', methods=['GET'])
-def result_image():
- """
- preview images
-
- :return: result image
- """
- app.logger.info("Received message from ClientIP [" + request.remote_addr
- + "] Operation [" + request.method + "]" +
- " Resource [" + request.url + "]")
-
- print('result image path global:',result_image_path)
- response = get_images(result_image_path)
-
- return jsonify(response)
-
-
-@app.route('/v1/pcb/detection/<EdgeLoc>/<cameraNum>', methods=['GET'])
-def detect_image(EdgeLoc, cameraNum):
- """
- detect images
-
- :return: success or failure
- """
- app.logger.info("Received message from ClientIP [" + request.remote_addr
- + "] Operation [" + request.method + "]" +
- " Resource [" + request.url + "]")
- global result_image_path
-
- image_path = EdgeLoc + '/' + cameraNum
- pathexist = path_exist(image_path)
- if pathexist == 0:
- response = {'responce': 'failure'}
- print ('image path not exist:',image_path)
- return jsonify(response)
-
- input_image_path = app.config['INPUT_IMAGE_PATH'] + image_path + '/'
- print('input image path:', input_image_path)
-
- output_image_path = app.config['OUTPUT_IMAGE_PATH'] + image_path + '/'
- print('out image path:', output_image_path)
-
- ret = detection(input_image_path, output_image_path)
- if (ret == 0):
- response = {'responce': 'failure'}
- print('detectio algo failed ')
- return jsonify(response)
-
- result_image_path = output_image_path
- print('result image path:', result_image_path)
-
- response = {'responce': 'success'}
- print('detection sucess')
- return jsonify(response)
-
-
-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)