|
from flask import Flask, render_template, request, session |
|
import os |
|
import subprocess |
|
import glob |
|
from PIL import Image |
|
import shutil |
|
import base64 |
|
import io |
|
|
|
|
|
app = Flask(__name__) |
|
app.config['UPLOAD_FOLDER'] = '/Users/furkanuysal/Desktop/DataScienceRepository/satellite_imagery_ship_detection_cnn/static' |
|
|
|
@app.route('/') |
|
def index(): |
|
return render_template('index.html') |
|
|
|
def run_detection(image_path, weights_path): |
|
shutil.rmtree('/Users/furkanuysal/Desktop/DataScienceRepository/satellite_imagery_ship_detection_cnn/predictions/') |
|
cmd = ['python', '/Users/furkanuysal/Desktop/DataScienceRepository/satellite_imagery_ship_detection_cnn/yolov5/detect.py', |
|
'--project', '/Users/furkanuysal/Desktop/DataScienceRepository/satellite_imagery_ship_detection_cnn/predictions' , |
|
'--source', image_path, '--weights', weights_path, '--name', '1'] |
|
|
|
return subprocess.run(cmd) |
|
|
|
@app.route('/submit', methods=['POST']) |
|
def upload_file(): |
|
|
|
file = request.files['file'] |
|
|
|
if file: |
|
file.save(os.path.join(app.config['UPLOAD_FOLDER'], file.filename)) |
|
image_path = os.path.join(app.config['UPLOAD_FOLDER'], file.filename) |
|
weights_path = '/Users/furkanuysal/Desktop/DataScienceRepository/satellite_imagery_ship_detection_cnn/tgrs_yolov5m_weights.pt' |
|
output = run_detection(image_path, weights_path) |
|
output_image_path = glob.glob('/Users/furkanuysal/Desktop/DataScienceRepository/satellite_imagery_ship_detection_cnn/predictions/1/*')[0] |
|
|
|
|
|
def pillow_image_to_base64_string(img): |
|
buffered = io.BytesIO() |
|
img.save(buffered, format="JPEG") |
|
return base64.b64encode(buffered.getvalue()).decode("utf-8") |
|
|
|
def base64_string_to_pillow_image(base64_str): |
|
return Image.open(io.BytesIO(base64.decodebytes(bytes(base64_str, "utf-8")))) |
|
|
|
my_img = Image.open(output_image_path) |
|
data_url = 'data:image/jpeg;base64,' + pillow_image_to_base64_string(my_img) |
|
size = Image.open(output_image_path) |
|
width = size.width |
|
height = size.height |
|
|
|
|
|
return render_template('index.html', message = 'Detection Success',data_url=data_url, |
|
width=width/2, height=height/2) |
|
|
|
|
|
if __name__ == '__main__': |
|
app.run(debug=True) |
|
|
|
|