48 lines
1.0 KiB
Python
48 lines
1.0 KiB
Python
import cv2
|
|
import os
|
|
|
|
from utils import *
|
|
from face_detection import *
|
|
from face_recognition import *
|
|
from face_classifying import *
|
|
|
|
# list all files in data/raw
|
|
files = list_all_files("./data/raw", ["jpg", "webp"])
|
|
|
|
print(files)
|
|
|
|
# process each files
|
|
faces = []
|
|
for file_path in files:
|
|
|
|
filename = file_path.split("/")[-1].split(".")[0]
|
|
|
|
# load image
|
|
img = cv2.imread(file_path)
|
|
if img is None:
|
|
print(f"ERROR: Could not read image at {file_path}")
|
|
continue
|
|
|
|
# detect faces file
|
|
faces_data = detect_face_in_image(img, scale=1)
|
|
|
|
# extract faces from file
|
|
extracted_faces = extract_faces(faces_data, img, filename)
|
|
|
|
faces += extracted_faces
|
|
|
|
classified_faces = classify_faces(faces)
|
|
|
|
# saving result by folders
|
|
for person, faces in classified_faces.items():
|
|
dir_ = f"./data/results/{person}/"
|
|
if not os.path.exists(dir_):
|
|
os.makedirs(dir_)
|
|
|
|
for face in faces:
|
|
face.save(dir_)
|
|
|
|
|
|
print("classified_faces: ", classified_faces)
|
|
|
|
cv2.destroyAllWindows() |