예제 #1
0
def Start():
    #Configuration de la page

    config = {
        "apiKey": "AIzaSyDk9Y_vRsmSB-_keAx-SbGOYncRjgkjbPQ",
        "authDomain": "novastepdb.firebaseapp.com",
        "databaseURL": "https://novastepdb.firebaseio.com",
        "projectId": "novastepdb",
        "storageBucket": "novastepdb.appspot.com",
        "messagingSenderId": "14365121179",
        "appId": "1:14365121179:web:cf2bdb7ff66b931b9a043e",
        "measurementId": "G-PKCX76F1K8"
    }
    global pageActuelle
    global pagePrecedente
    pageActuelle = "Accueil"
    pagePrecedente = ""
    firebase = pyrebase.initialize_app(config)
    storage = firebase.storage()
    storage.child("images/new.jpg").download("jamgeTendue.png")
    storage.child("images/new1.jpg").download("jambePlié.png")

    clean()

    #Items ajoutés
    logoAccueil_label.place(x=logoAccueil_label_x, y=logoAccueil_label_y)
    bouton_start.place(x=Coord_Bouton_Centr[0], y=Coord_Bouton_Centr[1])
예제 #2
0
    def uploadwithPyre(self, filepath, secretkey, id):
        table = self.table
        cred['private_key'] = secretkey

        config = {
            "apiKey": "apiKey",
            "authDomain": "hepatitis-mobile.firebaseapp.com",
            "databaseURL": "https://hepatitis-mobile.firebaseio.com",
            "storageBucket": "hepatitis-mobile.appspot.com",
            "serviceAccount": cred
        }

        storage_path = f'image/patient/{id}/'
        firebase = pyrebase.initialize_app(config)
        storage = firebase.storage()
        storage.child(storage_path).put(filepath)
        imageurl = storage.child(storage_path).get_url(id)

        with connection.cursor() as cursor:
            query = f"UPDATE {table} SET imgurl = {repr(imageurl)} WHERE {table}.id={repr(id)}"

            try:
                cursor.execute(query)
                connection.commit()
                return ("upload successful")
            except:
                return ("unable to upload image")
예제 #3
0
def urlprocess(url):
    name = url
    # print(name.find("%2F"));
    path = name[name.find("%2F")+3:]
    path =path[:path.find("%2F")]
    # print(path)
    tokens = name[name.find("token=")+6:]

    # auth = firebase.auth()
    # tokens = auth.sign_in_with_email_and_password("*****@*****.**","Teo361812")
    # tokens = auth.refresh(tokens['refreshToken'])

    # print(tokens)
    # print (name)
    firebasepath = "images/" + "{}".format(path)+"/{}.jpg".format(path)
    # print(firebasepath)
    storage = firebase.storage()
    # print(storage.child(firebasepath).get_url(tokens))
    storage.child(firebasepath).download("newimage.jpg")
    # hardcode xd
    # img_path = "./newimage.jpg"
    # pre_img_path = 'pre_' + os.path.basename(img_path) # pre_0.jpg
    # command = './imgtxtenh/imgtxtenh ' + ' -p ' + os.path.basename(img_path) + " " + os.path.basename(pre_img_path)# ../../imgtxtenh/imgtxtenh 0.jpg -p pre_0.jpg
    # p = subprocess.Popen(command, shell=True, stdout=subprocess.PIPE)
    uploadpath = "images/"+ "{}".format(path) + "/ocr.jpg"
    global ocrpath
    ocrpath = uploadpath
def photo():
    img = Image.open(request.files['img'])
    try:
        filename = secure_filename(request.files['img'].filename)
        print(filename)
        #img = img.resize((160,300),Image.ANTIALIAS)
        img.save(filename, optimize=True, quality=70)
        print(img)
        storage.child("images/" + filename).put(img)
        #link=storage.child("images/"+filename).get_url(None)
        #print(link)
        return jsonify({'message': link}), 200
    except:
        return jsonify({'message': 'error in uploading image'}), 400
예제 #5
0
def saveFolder(uploaded_files):
    cwd = os.getcwd()
    config = {"apiKey": "xxxxx",
                "authDomain": "xxxxx.firebaseapp.com",
                "databaseURL": "https://xxxxx.firebaseio.com",
                "projectId": "xxxxx",
                "storageBucket": "xxxxx.appspot.com",
                "messagingSenderId": "xxxxx",
                "appId": "1:xxxxx:web:xxxxx",
                "measurementId": "G-FXCMDZNL6T"}


    for folder in uploaded_files:
        if type(folder) == list:
            saveFolder(folder)
        else:
            path = os.path.join('./test/test', folder.filename)
            folder_path  = f'{folder.filename.split("/")[:-1]}'
            folder_path = folder_path[2:-2]
            folder_path = folder_path.replace("\', \'", "/")
            filePath = f"{cwd}/test/test/{folder_path}" 
            if os.path.exists(filePath) == True:
                folder.save(f'{filePath}/{folder.filename.split("/")[-1]}')
            else:
                os.mkdir(filePath)
                folder.save(f'{filePath}/{folder.filename.split("/")[-1]}')

            #save to firebase
            today = datetime.now()

            firebase = pyrebase.initialize_app(config)
            storage = firebase.storage()
            path_on_cloud = f'images/{today}.jpg'
            storage.child(path_on_cloud).put(f'{filePath}/{folder.filename.split("/")[-1]}')

            upload_url = storage.child(path_on_cloud).get_url(token=None)


            


    '''
    def __init__(self):

        super().__init__()

        self.setWindowTitle("TIP")
        self.setGeometry(800, 200, 600, 630)  #크기설정 (x좌표,y좌표,너비,높이)
        #메뉴 최대 갯수 지정
        self.btnnum = [
            '1', '2', '3', '4', '5', '6', '7', '8', '9', '10', '11', '12',
            '13', '14', '15', '16', '17', '18', '19', '20'
        ]
        self.btnlist = []
        self.Piclist = []

        for i in range(0, len(name)):
            storage.child(path_on_cloud + str(i + 1) + ".jpg").download(
                "img" + str(i + 1) + ".jpg",
                str(i + 1) + ".jpg")
            self.Piclist.append(PicButton(QPixmap(self.btnnum[i] + '.jpg')))
            self.Piclist[i].setMaximumHeight(100)
            self.Piclist[i].setMaximumWidth(100)

            self.btnlist.append(QPushButton(name[i]))
            self.btnlist[i].clicked.connect(lambda state, button=self.btnlist[
                i]: self.btn_clicked(state, button))

        self.Obtn1 = QPushButton("주문하기")
        self.Obtn1.setMaximumHeight(150)
        self.Obtn1.clicked.connect(self.btn_order)

        self.Obtn2 = QPushButton("취소하기")
        self.Obtn2.setMaximumHeight(150)
        self.Obtn2.clicked.connect(self.btn_refresh)

        layout1 = QGridLayout()  #GUI 컨텐츠들을 배치할 레이아웃 설정

        for i in range(0, len(name)):
            layout1.addWidget(self.Piclist[i], math.floor(i / 4) * 2, i % 4)
            layout1.addWidget(self.btnlist[i],
                              math.floor(i / 4) * 2 + 1, i % 4)

        groupbox = QGroupBox("주문정보")  #그룹박스 추가

        self.tableWidget = QTableWidget(4, 2)  #테이블 생성
        self.tableWidget.setHorizontalHeaderLabels(["음식이름",
                                                    "가격"])  #식당이름까지 DB로 보냄
        self.tableWidget.setMaximumHeight(160)  #테이블의 높이
        self.tableWidget.setMaximumWidth(250)  #테이블의 너비
        self.tableWidget.horizontalHeader().setStretchLastSection(
            True)  #글자가 넘어갔을때 글자가 ...으로 나오지 않도록 설정

        layout2 = QHBoxLayout()  #레이아웃 추가
        layout2.addWidget(self.tableWidget)  #테이블및 버튼추가
        layout2.addWidget(self.Obtn1)
        layout2.addWidget(self.Obtn2)

        groupbox.setLayout(layout2)

        layout3 = QHBoxLayout()
        layout3.addWidget(groupbox)

        layout = QVBoxLayout()
        layout.addLayout(layout1)
        layout.addLayout(layout3)

        self.setLayout(layout)  #레이아웃 합침
예제 #7
0
def trackImages():
    recognizer = cv2.face.LBPHFaceRecognizer_create()
    recognizer.read("Python-Code/DataSet/Trainner.yml")
    # harcascadePath = "haarcascade_frontalface_default.xml"
    # faceCascade = cv2.CascadeClassifier(harcascadePath)
    faceCascade = cv2.CascadeClassifier(cv2.data.haarcascades +
                                        'haarcascade_frontalface_default.xml')
    df = pd.read_csv("StudentRecord.csv")

    cam = cv2.VideoCapture(0)
    font = cv2.FONT_HERSHEY_SIMPLEX
    col_names = ['Id', 'Name', 'Date', 'Time']
    attendance = pd.DataFrame(columns=col_names)
    while True:
        ret, im = cam.read()
        gray = cv2.cvtColor(im, cv2.COLOR_BGR2GRAY)
        faces = faceCascade.detectMultiScale(gray, 1.3, 5)
        for (x, y, w, h) in faces:
            cv2.rectangle(im, (x, y), (x + w, y + h), (225, 0, 0), 2)
            Id, conf = recognizer.predict(gray[y:y + h, x:x + w])

            if (conf < 50):
                ts = time.time()
                date = datetime.datetime.fromtimestamp(ts).strftime('%Y-%m-%d')
                timeStamp = datetime.datetime.fromtimestamp(ts).strftime(
                    '%H:%M:%S')
                aa = df.loc[df['Id'] == Id]['Name'].values
                tt = str(Id) + "-" + aa
                attendance.loc[len(attendance)] = [Id, aa, date, timeStamp]
                # cv2.putText(im, "Name: " + str(df.loc['Name'].values), (x,y+h+30), fontface, fontscale, fontcolor ,2)
            else:
                Id = 'Unknown'
                tt = str(Id)
            if (conf > 75):
                noOfFile = len(os.listdir("Python-Code/UnknownImages")) + 1
                cv2.imwrite(
                    "Python-Code/UnknownImages/Image" + str(noOfFile) + ".jpg",
                    im[y:y + h, x:x + w])
            cv2.putText(im, str(tt), (x, y + h), font, 1, (255, 255, 255), 2)
        attendance = attendance.drop_duplicates(subset=['Id'], keep='first')

        cv2.imshow('Face Recognizing', im)

        if cv2.waitKey(10000) == ord('q'):
            break

    ts = time.time()
    date = datetime.datetime.fromtimestamp(ts).strftime('%Y-%m-%d')
    timeStamp = datetime.datetime.fromtimestamp(ts).strftime('%H:%M:%S')
    Hour, Minute, Second = timeStamp.split(":")

    #fileName="Attendance\Attendance_"+date+"_"+Hour+"-"+Minute+"-"+Second+".csv"
    fileName = "Python-Code/Attendance/Attendance_" + date + "_" + Hour + "-" + Minute + ".csv"
    attendance.to_csv(fileName, index=False)
    Firebase = pyrebase.initialize_app(config)
    storage = Firebase.storage()
    blob = storage.child('uploads1/' + fileName).put(fileName)

    data = {
        'name':
        "Date_" + date + "  Time_" + Hour + "-" + Minute + "-" + Second,
        'url':
        "https://console.firebase.google.com/u/6/project/facereconition-431f9/storage/facereconition-431f9.appspot.com/files~2Fuploads1~2FPython-Code~2FAttendance%5CAttendance_"
        + date + "_" + Hour + "-" + Minute + ".csv?alt=media&token=" +
        blob['downloadTokens']
    }
    #data =  { 'name': "Date_"+date+"  Time_"+Hour+"-"+Minute+"-"+Second, 'url': ULR stograge to uploade file excel(.csv)  }
    result = firebase.post('facereconition-431f9-default-rtdb/uploads1/',
                           data)  #databaseURL + folder you create
    print(result)

    cam.release()
    cv2.destroyAllWindows()

    res = attendance
    message.configure(text=res)
예제 #8
0
파일: main.py 프로젝트: Nekorra/Cadmus
    'messagingSenderId': "429388420685",
    'appId': "1:429388420685:web:7070e74b7130f11fcdae04",
    'measurementId': "G-MN3PGPLFZD"
}

firebase = pyrebase.initialize_app(config)
storage = firebase.storage()

LANGUAGE = 'english'
with open('data/recognized.txt', 'r') as input_file:
    SENTENCES_COUNT = int(n_sentences(input_file.read()) * .4)

with open('data/recognized.txt', 'r') as file:
    data = file.read().replace('\n', '')

storage.child('app/input').download(path='backend/data/app/input.jpeg',
                                    filename='data/app/input.jpeg')
storage.child('website/input').download(path='backend/data/website/input.jpeg',
                                        filename='data/website/input.jpeg')
storage.child('website/audio').download(path='backend/data/website/input.wav',
                                        filename='data/website/input.wav')

#------------------------------
INPUT = 'data/app/input.jpeg'
#---------------------------------

create_input(INPUT)

parser = PlaintextParser.from_string(data, Tokenizer(LANGUAGE))

stemmer = Stemmer(LANGUAGE)
예제 #9
0
def trackImages():
    recognizer = cv2.face.LBPHFaceRecognizer_create()
    recognizer.read("DataSet\Trainner.yml")
    harcascadePath = "haarcascade_frontalface_default.xml"
    faceCascade = cv2.CascadeClassifier(harcascadePath)
    df = pd.read_csv("StudentRecord.csv")

    cam = cv2.VideoCapture(0)
    font = cv2.FONT_HERSHEY_SIMPLEX
    col_names = ['Id', 'Name', 'Date', 'Time']
    attendance = pd.DataFrame(columns=col_names)
    while True:
        ret, im = cam.read()
        gray = cv2.cvtColor(im, cv2.COLOR_BGR2GRAY)
        faces = faceCascade.detectMultiScale(gray, 1.2, 5)
        for (x, y, w, h) in faces:
            cv2.rectangle(im, (x, y), (x + w, y + h), (225, 0, 0), 2)
            Id, conf = recognizer.predict(gray[y:y + h, x:x + w])
            if (conf < 50):
                ts = time.time()
                date = datetime.datetime.fromtimestamp(ts).strftime('%Y-%m-%d')
                timeStamp = datetime.datetime.fromtimestamp(ts).strftime(
                    '%H:%M:%S')
                aa = df.loc[df['Id'] == Id]['Name'].values
                tt = str(Id) + "-" + aa
                attendance.loc[len(attendance)] = [Id, aa, date, timeStamp]

            else:
                Id = 'Unknown'
                tt = str(Id)
            if (conf > 75):
                noOfFile = len(os.listdir("UnknownImages")) + 1
                cv2.imwrite("UnknownImages\Image" + str(noOfFile) + ".jpg",
                            im[y:y + h, x:x + w])
            cv2.putText(im, str(tt), (x, y + h), font, 1, (255, 255, 255), 2)
        attendance = attendance.drop_duplicates(subset=['Id'], keep='first')

        cv2.imshow('Face Recognizing', im)
        pass

        if cv2.waitKey(10000):
            break

    ts = time.time()
    date = datetime.datetime.fromtimestamp(ts).strftime('%Y-%m-%d')
    timeStamp = datetime.datetime.fromtimestamp(ts).strftime('%H:%M:%S')
    Hour, Minute, Second = timeStamp.split(":")

    #fileName="Attendance\Attendance_"+date+"_"+Hour+"-"+Minute+"-"+Second+".csv"
    fileName = "Attendance\Attendance_" + date + "_" + Hour + "-" + Minute + ".csv"
    attendance.to_csv(fileName, index=False)
    Firebase = pyrebase.initialize_app(config)
    storage = Firebase.storage()
    blob = storage.child('uploads/' + fileName).put(fileName)
    #jay = storage.child().get_url(blob['downloadTokens'])

    data = {
        'name':
        "Date_" + date + "  Time_" + Hour + "-" + Minute + "-" + Second,
        'url':
        "gs://attendecesystem-62b04.appspot.com/uploads/%2FAttendance%5CAttendance_"
        + date + "_" + Hour + "-" + Minute + ".csv?alt=media&token=" +
        blob['downloadTokens']
    }
    #data =  { 'name': "Date_"+date+"  Time_"+Hour+"-"+Minute+"-"+Second, 'url': jay}
    result = firebase.post('/uploads', data)
    print(result)

    cam.release()
    cv2.destroyAllWindows()
# Enable Storage
from firebase import firebase

import pyrebase

config = {
    "apiKey": " AIzaSyD_aONTpekw50_3RlNtt-LApnVuO2kisbM ",
    "authDomain": "plant-7de21.firebaseapp.com",
    "databaseURL": "https://plant-7de21.firebaseio.com/",
    #"projectId": "",
    "storageBucket": "plant-7de21.appspot.com",
}

firebase = pyrebase.initialize_app(config)
storage = firebase.storage()
storage.child("Disease\Disease_Report.docx").put("Disease_Report.docx")

#firebase_admin.App("Plant",cred,"Default")
#firebase_admin.initialize_app(cred)
#firebase_admin.initialize_app(credential=None, options=None, name='[DEFAULT]')
#firebase_admin.get_app("Plant")

# Reference an existing bucket.

# Upload a local file to a new file to be created in your bucket.
#zebraBlob = bucket.get_blob('zebra.jpg')
#zebraBlob.upload_from_filename(filename='/photos/zoo/zebra.jpg')

# Download a file from your bucket.
#giraffeBlob = bucket.get_blob('giraffe.jpg')
#giraffeBlob.download_as_string()
예제 #11
0
파일: openpose.py 프로젝트: Nekorra/QWES
    "databaseURL": "https://facebookchat-f1db0.firebaseio.com",
    "projectId": "facebookchat-f1db0",
    "storageBucket": "facebookchat-f1db0.appspot.com",
    "messagingSenderId": "932350125174",
    "appId": "1:932350125174:web:eb6542aa2fca8177d36b57",
    "measurementId": "G-FXWBB6W7P3"
}

firebase = pyrebase.initialize_app(config)
storage = firebase.storage()

path_on_cloud = "output/output"
path_local = "output/output.png"
path_for_input = "yogaImages/yoga"

storage.child(path_for_input).download("input/input.png")

parser = argparse.ArgumentParser()
parser.add_argument('--input', help='Path to image or video. Skip to capture frames from camera')
parser.add_argument('--thr', default=0.2, type=float, help='Threshold value for pose parts heat map')
parser.add_argument('--width', default=368, type=int, help='Resize input to specific width.')
parser.add_argument('--height', default=368, type=int, help='Resize input to specific height.')

args = parser.parse_args()

BODY_PARTS = { "Nose": 0, "Neck": 1, "RShoulder": 2, "RElbow": 3, "RWrist": 4,
               "LShoulder": 5, "LElbow": 6, "LWrist": 7, "RHip": 8, "RKnee": 9,
               "RAnkle": 10, "LHip": 11, "LKnee": 12, "LAnkle": 13, "REye": 14,
               "LEye": 15, "REar": 16, "LEar": 17, "Background": 18 }

POSE_PAIRS = [ ["Neck", "RShoulder"], ["Neck", "LShoulder"], ["RShoulder", "RElbow"],
예제 #12
0

try:
    switch = 1
    while True:
        now = datetime.now()
        if switch:
            #sens = DLsensor.mtreg
            #hr = DLsensor.measure_high_res()
            #hr2 = DLsensor.measure_high_res2()
            lumi = DLsensor.measure_low_res()
            DLsensor.set_sensitivity((DLsensor.mtreg + 10) % 255)

            # Try to grab a sensor reading.  Use the read_retry method which will retry up
            # to 15 times to get a sensor reading (waiting 2 seconds between each retry).
            humi, temp = Adafruit_DHT.read_retry(DHTsensor, DHTpin)

            print(dbUpdate(now, lumi, temp, humi))
            switch = 0
        else:
            filename = 'img_' + now.strftime('%Y-%m-%d_%H:%M:%S') + '.jpg'
            single_frame(filename, 10)
            time.sleep(10)
            print(storage.child(path_on_cloud).put("images/" + filename))
            # print(imageUp(now, filename))
            switch = 1
        time.sleep(delay / 2)
except (KeyboardInterrupt, SystemExit):
    print(" -> Ambient Control program shutdown...")
    print("Bye!")
    sys.exit()
예제 #13
0
def upload_to_firebase(filename):
  file_path = f"./results/{filename}"
  file_node = storage.child(filename)
  result = file_node.put(file_path)
  url = build_download_url(result["name"], result["downloadTokens"])
  return url
예제 #14
0
파일: main1.py 프로젝트: arjunmohnot/Visker
from google.cloud import storage
from firebase import firebase
import os
import urllib
os.environ['GOOGLE_APPLICATION_CREDENTIALS'] = 'visker-ede34-firebase-adminsdk-u8kfs-adeefaeb4f.json'
firebase=firebase.FirebaseApplication('https://visker-ede34.appspot.com/')
client=storage.Client()
bucket=client.get_bucket('visker-ede34.appspot.com')
blobs=bucket.list_blobs()
imageBlob=bucket.blob("images/1.jpg")
imageBlob.upload_from_filename('thor.jpg')
imageBlob=bucket.blob("images/2.jpg")
imageBlob.upload_from_filename('image.jpg')
storage = firebase.storage()
storage.child("images/example.jpg").download("img")
예제 #15
0
def predictOneImage():
    if request.method == "POST":
        img_url = request.files["image"]
        apikey = request.form["apikey"]
        
        print(f'this is the url {img_url.filename}')
        if img_url.filename == "":
            flash('Please upload an image')
            return redirect(url_for("folderImagesPredict"))
        else:
        
            UPLOAD_FOLDER = './test/test'
            app.config['UPLOAD_FOLDER'] = UPLOAD_FOLDER

            #save image to local directory for upload to firebase storage
            path = os.path.join(app.config['UPLOAD_FOLDER'], img_url.filename)
            img_url.save(path)






            if not firebase_admin._apps:
                #fetch credentials
                cred = credentials.Certificate("service_account.json")
                firebase_admin.initialize_app(cred, {'databaseURL': 'https://xxxxx.firebaseio.com/'})


            ##validate API KEY
            ref = db.reference('ApiKey')
            apiKeyType = ref.child(apikey).child("type").get()

            if apiKeyType == None:
                flash('Invalid API Key')
                return redirect(url_for("oneImagePredict"))
            else:

                #image_url = sys.argv[1] #we pass the url as an argument

                config = {"apiKey": "xxxxx",
                            "authDomain": "xxxxx.firebaseapp.com",
                            "databaseURL": "https://xxxxx.firebaseio.com",
                            "projectId": "xxxxx",
                            "storageBucket": "xxxxx.appspot.com",
                            "messagingSenderId": "xxxxx",
                            "appId": "1:xxxxx:web:xxxxx",
                            "measurementId": "xxxxx"}

                today = datetime.now()


                firebase = pyrebase.initialize_app(config)
                storage = firebase.storage()
                path_on_cloud = f'images/{today}.jpg'
                storage.child(path_on_cloud).put(path)

                upload_url = storage.child(path_on_cloud).get_url(token=None)




                #Download Image
                '''
                with urllib.request.urlopen(upload_url) as url:
                    with open('test/temp.jpg', 'wb') as f:
                        f.write(url.read())
                '''


                #preprocess image
                test_gen = ImageDataGenerator(rescale=1./255,
                    shear_range=0.2,
                    zoom_range=0.2,
                    horizontal_flip=True)

                test_generator = test_gen.flow_from_directory(
                        "test/",
                        target_size=(224, 224),
                        shuffle = False,
                        class_mode='categorical',
                        batch_size=1)

                #load model
                loaded_model = load_model('model/model1-94%.h5')

                #make prediciton
                predict = loaded_model.predict_generator(test_generator) 
                array  = np.array(predict)
                ind = np.argmax(predict)
                _class = ind
                print(array,ind,_class)

                #remove image from local directory
                os.remove(path)

                #return class
                if _class == 0:
                    flash("BAD BACKGROUND")
                    return redirect(url_for("oneImagePredict"))
                elif _class == 1:
                    flash("BLURRY")
                    return redirect(url_for("oneImagePredict"))
                elif _class == 2:
                    flash("FACE IN BACKGROUND")
                    return redirect(url_for("oneImagePredict"))
                elif _class == 3:
                    flash("GOOD IMAGE")
                    return redirect(url_for("oneImagePredict"))
                elif _class == 4:
                    flash("INVALID PASSPORT")
                    return redirect(url_for("oneImagePredict"))
                elif _class == 5:
                    flash("NO HUMAN FACE")
                    return redirect(url_for("oneImagePredict"))
                elif _class == 6:
                    flash("STAPLE DEFACED")
                    return redirect(url_for("oneImagePredict"))
                else:
                    return "500"
            
    else:
        return "Use a POST request to access this API, check documentation at "
예제 #16
0
def predictImagesInFolder(): 

    if request.method == "POST":
        uploaded_files = request.files.getlist("image")
        apikey = request.form["apikey"]

        if not uploaded_files or not any(f for f in uploaded_files):
            flash('Please upload a folder')
            return redirect(url_for("multipleImagePredict"))
        else:

            config = {"apiKey":xxxxx",
                            "authDomain": "xxxxx.firebaseapp.com",
                            "databaseURL": "xxxxx.firebaseio.com",
                            "projectId": "xxxxx",
                            "storageBucket": "xxxxx.appspot.com",
                            "messagingSenderId": "xxxxx",
                            "appId": "1:xxxxx:web:xxxxx",
                            "measurementId": "xxxxx"}


            

            UPLOAD_FOLDER = './test/test'
            app.config['UPLOAD_FOLDER'] = UPLOAD_FOLDER
            
            
            saveFolder(uploaded_files)

            if not firebase_admin._apps:
                #fetch credentials
                cred = credentials.Certificate("service_account.json")
                firebase_admin.initialize_app(cred, {'databaseURL': 'https://xxxxx.firebaseio.com/'})


            ##validate API KEY
            ref = db.reference('ApiKey')
            apiKeyType = ref.child(apikey).child("type").get()

            if apiKeyType == None:
                flash('Invalid API Key')
                return redirect(url_for("oneImagePredict"))
            else:
                #preprocess image

                test_gen = ImageDataGenerator(rescale=1./255,
                    shear_range=0.2,
                    zoom_range=0.2,
                    horizontal_flip=True)

                test_generator = test_gen.flow_from_directory(
                        "test/",
                        target_size=(224, 224),
                        shuffle = False,
                        class_mode='categorical',
                        batch_size=1)

                #load model
                loaded_model = load_model('model/model1-94%.h5')
                #make prediciton
                predict = loaded_model.predict_generator(test_generator) 
                array  = np.array(predict)
                result = {}
                for i, rows in enumerate(array):
                    _class = np.argmax(rows)
                    result[uploaded_files[i].filename] = _class


                today = datetime.now()
                current_directory = os.getcwd()
                final_directory = os.path.join(current_directory, f'result_{today}')
                if not os.path.exists(final_directory):
                    os.makedirs(final_directory) 

                error = 0
                currentProgress = 0
                resultDisplayed = {}

                for key, value in result.items():
                    if value == 0:
                        #BAD BACKGROUND
                        if os.path.exists(f"{final_directory}/BAD_BACKGROUND") == True:
                            try:
                                shutil.move(f"{UPLOAD_FOLDER}/{key}" , f"{final_directory}/BAD_BACKGROUND")
                                resultDisplayed["BAD_BACKGROUND"] += 1
                            except:
                                error += 1
                        else:
                            #make directory
                            os.mkdir(f"{final_directory}/BAD_BACKGROUND")
                            try:
                                shutil.move(f"{UPLOAD_FOLDER}/{key}" , f"{final_directory}/BAD_BACKGROUND")
                                resultDisplayed["BAD_BACKGROUND"] = 1
                            except Exception as e:
                                error += 1
                            currentProgress +=1

                    elif value == 1:
                        #BLURRY
                        if os.path.exists(f"{final_directory}/BLURRY") == True:
                            try:
                                shutil.move(f"{UPLOAD_FOLDER}/{key}" , f"{final_directory}/BLURRY")
                                resultDisplayed["BLURRY"] += 1
                            except:
                                error += 1
                        else:
                            #make directory
                            os.mkdir(f"{final_directory}/BLURRY")
                            try:
                                shutil.move(f"{UPLOAD_FOLDER}/{key}" , f"{final_directory}/BLURRY")
                                resultDisplayed["BLURRY"] = 1
                            except Exception as e:
                                error += 1
                            currentProgress +=1

                    elif value == 2:
                        #FACE_IN_BACKGROUND
                        if os.path.exists(f"{final_directory}/FACE_IN_BACKGROUND") == True:
                            try:
                                shutil.move(f"{UPLOAD_FOLDER}/{key}" , f"{final_directory}/FACE_IN_BACKGROUND")
                                resultDisplayed["FACE_IN_BACKGROUND"] += 1
                            except:
                                error += 1
                        else:
                            #make directory
                            os.mkdir(f"{final_directory}/FACE_IN_BACKGROUND")
                            try:
                                shutil.move(f"{UPLOAD_FOLDER}/{key}" , f"{final_directory}/FACE_IN_BACKGROUND")
                                resultDisplayed["FACE_IN_BACKGROUND"] = 1
                            except Exception as e:
                                error += 1
                            currentProgress +=1

                    elif value == 3:
                        #GOOD_IMAGES
                        if os.path.exists(f"{final_directory}/GOOD_IMAGES") == True:
                            try:
                                shutil.move(f"{UPLOAD_FOLDER}/{key}" , f"{final_directory}/GOOD_IMAGES")
                                resultDisplayed["GOOD_IMAGES"] += 1
                            except:
                                error += 1
                        else:
                            #make directory
                            os.mkdir(f"{final_directory}/GOOD_IMAGES")
                            try:
                                shutil.move(f"{UPLOAD_FOLDER}/{key}" , f"{final_directory}/GOOD_IMAGES")
                                resultDisplayed["GOOD_IMAGES"] = 1
                            except Exception as e:
                                error += 1
                            currentProgress +=1


                    elif value == 4:
                        #INVALID_PASSPORT
                        if os.path.exists(f"{final_directory}/INVALID_PASSPORT") == True:
                            try:
                                shutil.move(f"{UPLOAD_FOLDER}/{key}" , f"{final_directory}/INVALID_PASSPORT")
                                resultDisplayed["INVALID_PASSPORT"] += 1
                            except:
                                error += 1
                        else:
                            #make directory
                            os.mkdir(f"{final_directory}/INVALID_PASSPORT")
                            try:
                                shutil.move(f"{UPLOAD_FOLDER}/{key}" , f"{final_directory}/INVALID_PASSPORT")
                                resultDisplayed["INVALID_PASSPORT"] = 1
                            except Exception as e:
                                error += 1
                            currentProgress +=1



                    elif value == 5:
                        #NO_HUMAN_FACE
                        if os.path.exists(f"{final_directory}/NO_HUMAN_FACE") == True:
                            try:
                                shutil.move(f"{UPLOAD_FOLDER}/{key}" , f"{final_directory}/NO_HUMAN_FACE")
                                resultDisplayed["NO_HUMAN_FACE"] += 1
                            except:
                                error += 1
                        else:
                            #make directory
                            os.mkdir(f"{final_directory}/NO_HUMAN_FACE")
                            try:
                                shutil.move(f"{UPLOAD_FOLDER}/{key}" , f"{final_directory}/NO_HUMAN_FACE")
                                resultDisplayed["NO_HUMAN_FACE"] = 1
                            except Exception as e:
                                error += 1
                            currentProgress +=1


                    elif value == 6:
                        #STAPLED_FACE
                        if os.path.exists(f"{final_directory}/STAPLED_FACE") == True:
                            try:
                                shutil.move(f"{UPLOAD_FOLDER}/{key}" , f"{final_directory}/STAPLED_FACE")
                                resultDisplayed["STAPLED_FACE"] += 1
                            except:
                                error += 1
                        else:
                            #make directory
                            os.mkdir(f"{final_directory}/STAPLED_FACE")
                            try:
                                shutil.move(f"{UPLOAD_FOLDER}/{key}" , f"{final_directory}/STAPLED_FACE")
                                resultDisplayed["STAPLED_FACE"] = 1
                            except Exception as e:
                                error += 1
                            currentProgress +=1
                                    
                #make zip file
                shutil.make_archive(f'result_{today}', 'zip', final_directory)

                #upload to firebase
                firebase = pyrebase.initialize_app(config)
                storage = firebase.storage()
                path_on_cloud = f'results/{today}.zip'
                storage.child(path_on_cloud).put(f'{final_directory}.zip')

                upload_url = storage.child(path_on_cloud).get_url(token=None)



                resultDisplayed["downloadLink"] = upload_url

                print(f'result directory {upload_url}')
                print(result)



                 #remove image from local directory
                shutil.rmtree(final_directory)
                os.remove(f'{final_directory}.zip') 

                return render_template("multipleFolderImagesPopUp.html", data=resultDisplayed)
    else:
        return "Use a POST request to access this API, check documentation at "
    def RecognizeFaceFromVideo():
        FaceRecognize = cv2.face.LBPHFaceRecognizer_create()
        FaceRecognize.read("AllData\TrainedData\DataTrained.yml")
        harcascadeFilePath = "AllData\haarcascade_frontalface_default.xml"
        faceCascade = cv2.CascadeClassifier(harcascadeFilePath)
        datafile = pd.read_csv("AllData\StudentDataRecord.csv")
        collum_names = ['Id', 'Name', 'Date', 'Time']
        AttendanceOfStudent = pd.DataFrame(columns=collum_names)

        cap = cv2.VideoCapture(0)
        if (cap.isOpened() == False):
            messagebox.showerror(
                title="Error",
                message="There is some problem with your camera")
            root.destroy()

        while True:
            _, img = cap.read()
            if (_ == False):
                messagebox.showerror(
                    title="Error",
                    message=
                    "You have to close video running on home page or select image checkbox"
                )
                root.destroy()
                break

            grayImg = cv2.cvtColor(img, cv2.COLOR_BGR2GRAY)
            Detectedfaces = faceCascade.detectMultiScale(grayImg, 1.2, 5)
            for (x, y, width, height) in Detectedfaces:
                cv2.rectangle(img, (x, y), (x + width, y + height),
                              (225, 0, 0), 2)
                Id, confidence = FaceRecognize.predict(grayImg[y:y + height,
                                                               x:x + width])
                if (confidence <= 50):
                    CurrentTime = time.time()
                    CurrentDate = datetime.datetime.fromtimestamp(
                        CurrentTime).strftime('%Y-%m-%d')
                    timeStamp = datetime.datetime.fromtimestamp(
                        CurrentTime).strftime('%H:%M:%S')
                    name = datafile.loc[datafile['Id'] == Id]['Name'].values
                    key = str(Id) + "-" + name
                    AttendanceOfStudent.loc[len(AttendanceOfStudent)] = [
                        Id, name, CurrentDate, timeStamp
                    ]

                else:
                    Id = 'Unknown'
                    key = str(Id)

                cv2.putText(img, str(key), (x, y + height),
                            cv2.FONT_HERSHEY_SIMPLEX, 1, (255, 255, 255), 2)
            AttendanceOfStudent = AttendanceOfStudent.drop_duplicates(
                subset=['Id'], keep='first')

            cv2.imshow('Face Recognizing', img)

            if cv2.waitKey(10000) or cv2.waitKey(1) == ord('q'):

                break

        CurrentTime = time.time()
        CurrentDate = datetime.datetime.fromtimestamp(CurrentTime).strftime(
            '%Y-%m-%d')
        timeStamp = datetime.datetime.fromtimestamp(CurrentTime).strftime(
            '%H:%M:%S')
        Hour, Minute, Second = timeStamp.split(":")

        fileName = "AllData\StudentAttendance\StudentAttendance_" + \
            CurrentDate+"_"+Hour+"-"+Minute+".csv"
        AttendanceOfStudent.to_csv(fileName, index=True)
        Firebase = pyrebase.initialize_app(firebaseConfig)
        storage = Firebase.storage()
        bllob = storage.child('uploads/' + fileName).put(fileName)

        StudentData = {
            'name':
            "Date: " + CurrentDate + " Time: " + Hour + "-" + Minute + "--" +
            Second,
            'url':
            "https://firebasestorage.googleapis.com/v0/b/ <gs:add your firebase storage url here/> %2FAttendance%5CAttendance_"
            + CurrentDate + "_" + Hour + "-" + Minute +
            ".csv?alt=media&token=" + bllob['downloadTokens']
        }

        UploadDataToDatabase = firebase.post('/uploads', StudentData)
        retrivedData = AttendanceOfStudent
        StudentsPresent.configure(text=retrivedData)
        cap.release()
        cv2.destroyAllWindows()