CARIA.2.1
Update for the final presentation huge change with previous version
This commit is contained in:
@@ -0,0 +1,59 @@
|
||||
import cv2
|
||||
import os
|
||||
import numpy as np
|
||||
import pickle
|
||||
from pathlib import Path
|
||||
|
||||
# Définir les chemins
|
||||
IMAGE_DIR = Path(r"W:/CARIA/images/avatars")
|
||||
LABELS_FILE = Path("server-ia/data/modeles/CV2/labels.pickle")
|
||||
TRAINER_FILE = Path("server-ia/data/modeles/CV2/trainner.yml")
|
||||
|
||||
# Initialiser les variables
|
||||
current_id = 0
|
||||
label_ids = {}
|
||||
x_train = []
|
||||
y_labels = []
|
||||
|
||||
def process_images(image_dir):
|
||||
global current_id, label_ids, x_train, y_labels
|
||||
print("Début du traitement des images...")
|
||||
for root, _, files in os.walk(image_dir):
|
||||
if files:
|
||||
label = Path(root).name
|
||||
for file in files:
|
||||
if file.lower().endswith(".jpg"):
|
||||
path = Path(root) / file
|
||||
if label not in label_ids:
|
||||
label_ids[label] = current_id
|
||||
current_id += 1
|
||||
id_ = label_ids[label]
|
||||
image = cv2.imread(str(path), cv2.IMREAD_GRAYSCALE)
|
||||
if image is not None:
|
||||
x_train.append(image)
|
||||
y_labels.append(id_)
|
||||
print(f"Traitement terminé. {len(x_train)} images chargées.")
|
||||
|
||||
def save_data():
|
||||
print("Sauvegarde des étiquettes...")
|
||||
with open(LABELS_FILE, "wb") as f:
|
||||
pickle.dump(label_ids, f)
|
||||
print(f"Étiquettes sauvegardées dans {LABELS_FILE}.")
|
||||
|
||||
def train_recognizer():
|
||||
print("Entraînement du reconnaisseur...")
|
||||
x_train_np = np.array(x_train)
|
||||
y_labels_np = np.array(y_labels)
|
||||
recognizer = cv2.face.LBPHFaceRecognizer_create()
|
||||
recognizer.train(x_train_np, y_labels_np)
|
||||
recognizer.save(str(TRAINER_FILE))
|
||||
print(f"Modèle entraîné et sauvegardé dans {TRAINER_FILE}.")
|
||||
|
||||
def main():
|
||||
process_images(IMAGE_DIR)
|
||||
save_data()
|
||||
train_recognizer()
|
||||
print("Traitement complet. Les modèles ont été sauvegardés.")
|
||||
|
||||
if __name__ == "__main__":
|
||||
main()
|
||||
Reference in New Issue
Block a user