AI_NANBAN_CBSE / image.py
trts's picture
Upload 12 files
adff838 verified
raw
history blame
2.22 kB
import os
import face_recognition as fr
def save_image(picture, directory, filename):
if not os.path.exists(directory):
os.makedirs(directory)
if picture:
with open(directory + filename + ".jpg", "wb") as f:
f.write(picture.getvalue())
def delete_image(image_path):
if os.path.exists(image_path):
os.remove(image_path)
def get_all_images(directory):
return [file for file in os.listdir(directory) if file.endswith('.jpg') or file.endswith('.png')]
def compare_faces_in_directory(known_image_dir, unknown_image_dir):
# Get list of image files in the directory
known_image_files = get_all_images(known_image_dir)
unknown_image_files = get_all_images(unknown_image_dir)
if not unknown_image_files:
return False, -1
# Iterate over image files
for j, known_image_file in enumerate(known_image_files):
# Load images
unknown_img_path = os.path.join(unknown_image_dir, unknown_image_files[0])
known_img_path = os.path.join(known_image_dir, known_image_file)
image1 = fr.load_image_file(unknown_img_path)
image2 = fr.load_image_file(known_img_path)
# Find face encodings
face_encodings1 = fr.face_encodings(image1)
face_encodings2 = fr.face_encodings(image2)
if len(face_encodings1) > 0 and len(face_encodings2) > 0:
# Compare the first face encoding from each image
face_encoding1 = face_encodings1[0]
face_encoding2 = face_encodings2[0]
# Calculate similarity
similarity = fr.face_distance([face_encoding1], face_encoding2)
# Set a threshold for similarity
threshold = 0.4
# Output comparison result
user_id = os.path.splitext(known_image_file)[0]
if similarity[0] < threshold:
print(f"Images {unknown_image_files[0]} and {known_image_file} have similar faces.")
return True, user_id
else:
print(f"Images {unknown_image_files[0]} and {known_image_file} do not have similar faces.")
else:
print(f"No faces found in one or both images.")
return False, -1