valdez's picture
test3
4d8919f
from flask import Flask, request, jsonify
import os
import face_recognition
app = Flask(__name__)
@app.route('/find_person', methods=['POST'])
def trouver_personnes():
# Vérifier si le fichier d'image est présent dans la requête
if 'image' not in request.files:
return jsonify({'message': 'Aucun fichier d\'image trouvé.'}), 400
image_a_comparer = request.files['image']
# Charger l'image à comparer
image = face_recognition.load_image_file(image_a_comparer)
encodage_image = face_recognition.face_encodings(image)
if len(encodage_image) == 0:
return jsonify({'message': 'Aucun visage détecté dans l\'image.'}), 400
encodage_image = encodage_image[0]
correspondances = []
i = 0
# Parcourir les images dans le dossier identite_photo
for fichier in os.listdir('BD_photo'):
if fichier.endswith('.jpg') or fichier.endswith('.png'):
chemin_image = os.path.join('BD_photo', fichier)
image_base = face_recognition.load_image_file(chemin_image)
encodage_base = face_recognition.face_encodings(image_base)
if len(encodage_base) == 0:
continue
encodage_base = encodage_base[0]
# Comparer les encodages faciaux
correspondance = face_recognition.compare_faces([encodage_base], encodage_image)
if correspondance[0]:
nom_personne = os.path.splitext(fichier)[0]
# taux_fiabilite = face_recognition.face_distance([encodage_base], encodage_image)[0]
# correspondances.append((nom_personne, taux_fiabilite))
i += 1
if i <= 3:
correspondances.append(nom_personne)
# Trier les correspondances par ordre décroissant de taux de fiabilité
correspondances = sorted(correspondances, key=lambda x: x[1], reverse=True)
if len(correspondances) > 0:
return jsonify({'resultats': correspondances})
else:
return jsonify({'message': 'Aucune correspondance trouvée.'}), 404
@app.route('/add_picture', methods=['POST'])
def ajouter_image():
# Vérifier si le fichier d'image est présent dans la requête
if 'image' not in request.files:
return jsonify({'message': 'Aucun fichier d\'image trouvé.'}), 400
# Charger l'image à ajouter
image_a_ajouter = request.files['image']
# Obtenir le chemin absolu du dossier `BD_photo`
path_to_bd_photo = os.path.abspath("BD_photo")
if not os.access(path_to_bd_photo, os.W_OK):
# Donner les permissions d'écriture au dossier `BD_photo`
os.chmod(path_to_bd_photo, os.W_OK)
# Enregistrer l'image dans le dossier `BD_photo`
image_a_ajouter.save(path_to_bd_photo + "/" + image_a_ajouter.filename)
return jsonify({'message': 'L\'image a été ajoutée avec succès.'}), 200
if __name__ == '__main__':
app.run()