import cv2
import os
import shutil
import mediapipe as mp

# Setări MediaPipe pentru detectarea fețelor
mp_face_detection = mp.solutions.face_detection
mp_drawing = mp.solutions.drawing_utils

# Cere utilizatorului să introducă numele folderului sursă
input_folder_name = input("Introdu numele folderului sursă cu poze (în același director cu scriptul): ")

# Creează căile absolute pentru folderele sursă și destinație
current_directory = os.path.dirname(os.path.abspath(__file__))
input_folder = os.path.join(current_directory, input_folder_name)
output_folder = os.path.join(current_directory, 'humanfacial')

# Crează folderul de destinație dacă nu există
if not os.path.exists(output_folder):
    os.makedirs(output_folder)

# Verifică dacă folderul sursă există
if not os.path.exists(input_folder):
    print("Folderul sursă nu există. Te rog să verifici numele introdus.")
else:
    # Deschide sesiunea MediaPipe pentru detectarea fețelor
    with mp_face_detection.FaceDetection(model_selection=1, min_detection_confidence=0.6) as face_detection:
        # Parcurge toate fișierele din folderul sursă
        for filename in os.listdir(input_folder):
            if filename.lower().endswith(('.jpg', '.jpeg', '.png')):
                # Încarcă imaginea
                img_path = os.path.join(input_folder, filename)
                img = cv2.imread(img_path)
                
                # Verifică dacă imaginea a fost încărcată corect
                if img is None:
                    print(f"Nu s-a putut încărca imaginea: {filename}. Verifică dacă fișierul este valid.")
                    continue

                # Convertim imaginea în format RGB pentru MediaPipe
                img_rgb = cv2.cvtColor(img, cv2.COLOR_BGR2RGB)

                # Detectează fețele în imagine
                results = face_detection.process(img_rgb)

                # Verifică dacă există fețe detectate
                if results.detections:
                    shutil.move(img_path, os.path.join(output_folder, filename))
                    print(f'Mut imaginea: {filename}')
                else:
                    print(f'Nu s-au găsit fețe în: {filename}')

    print(f"Imaginile cu fețe au fost mutate în folderul '{output_folder}'.")
