File size: 3,828 Bytes
364ca9d
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
import os
import cv2
from flask import Flask, request, jsonify
from werkzeug.utils import secure_filename

#-----------------------------------------------------
# Tempat setting server
UPLOAD_FOLDER = './upload'
UPLOAD_MODEL = './models'
ALLOWED_EXTENSIONS = {'png', 'jpg', 'jpeg','zip','h5'}
app.config['UPLOAD_FOLDER'] = UPLOAD_FOLDER
app.config['UPLOAD_MODEL'] = UPLOAD_MODEL
app.config['MAX_CONTENT_LENGTH'] = 500 * 1024 * 1024  # 500 MB
#-----------------------------------------------------


class FaceDetectionApp:
    def __init__(self, upload_folder="./static", public_url="/"):
        self.app = Flask(__name__)
        self.app.config['UPLOAD_FOLDER'] = upload_folder
        self.app.config['UPLOAD_MODEL'] = os.path.join(upload_folder, "model")
        self.public_url = public_url

        def delete_img():
            for i in range (0,4):
                if os.path.exists(f"./static/result_upload{i}.jpg"):
                    os.remove(f"./static/result_upload{i}.jpg")
                    print("File terhapus")
                    return jsonify({'message': 'Berhasil di hapus'}), 400
                else:
                    print("File tidak ditemukan.")
                    return jsonify({'message': 'No file selected for uploading'}), 400

        def upload_file():
            if 'file' not in request.files:
                return jsonify({'message': 'No file part in the request'}), 400

            file = request.files['file']

            if file.filename == '':
                return jsonify({'message': 'No file selected for uploading'}), 400

            filename = secure_filename(file.filename)
            filepath = os.path.join(self.app.config['UPLOAD_FOLDER'], filename)
            file.save(filepath)
            img = cv2.imread(filepath)
            # Detect Face
            try:
                self.preprocessing(img)
                return jsonify({'message': 'File successfully uploaded'})
            except:
                path = "empty_image.png"
                return jsonify({'message': 'File failed to uploaded'})

        def upload_data():
            if 'file' not in request.files:
                return jsonify({'message': 'No file part in the request'}), 400

            file = request.files['file']

            if file.filename == '':
                return jsonify({'message': 'No file selected for uploading'}), 400

            if file and self.allowed_file(file.filename):
                filename = secure_filename(file.filename)
                filepath = os.path.join(self.app.config['UPLOAD_FOLDER'], filename)
                file.save(filepath)

                self.extract_zip(filepath)
                return jsonify({'message': 'File successfully uploaded'})

            return jsonify({'message': 'File failed to uploaded'})


        def upload_model():
            if 'file' not in request.files:
                return jsonify({'message': 'No file part in the request'}), 400

            file = request.files['file']

            if file.filename == '':
                return jsonify({'message': 'No file selected for uploading'}), 400

            if file and self.allowed_file(file.filename):
                filename = secure_filename(file.filename)
                filepath = os.path.join(self.app.config['UPLOAD_MODEL'], filename)
                file.save(filepath)

                return jsonify({'message': 'File successfully uploaded'})

            return jsonify({'message': 'File failed to uploaded'})

        def get_total_files():
            training_counts = self.get_training_file_counts()
            testing_counts = self.get_testing_file_counts()
            result = {}
            result['training'] = training_counts.json
            result['testing'] = testing_counts.json
            return jsonify(result)