multiple faces

main
Kar 2025-01-05 15:21:24 +00:00
parent af1000ca39
commit 304ff945a7
1 changed files with 34 additions and 0 deletions

34
app.py
View File

@ -82,5 +82,39 @@ def recognize_image():
return jsonify({'error': 'Student not recognized'}), 404
@app.route('/rec_multi_face', methods=['POST'])
def recognize_multiple_faces():
if 'face' not in request.files:
return jsonify({'error': 'Image not provided'}), 400
image = request.files['face']
# Load the uploaded image file into a numpy array
unknown_image = face_recognition.load_image_file(image)
# Detect face locations in the image
face_locations = face_recognition.face_locations(unknown_image)
# Get the face encodings for each detected face
unknown_encodings = face_recognition.face_encodings(unknown_image, face_locations)
if len(unknown_encodings) > 0:
matches = []
for unknown_encoding in unknown_encodings:
for student_id, known_encoding in students_db.items():
# Calculate the distance between the known encoding and the uploaded image encoding
distance = face_recognition.face_distance([known_encoding], unknown_encoding)[0]
# Convert distance to accuracy score (the closer the distance, the higher the accuracy)
accuracy_score = (1 - distance) * 100
if accuracy_score > 50: # Threshold to filter out low-confidence matches
matches.append({'student_id': student_id, 'accuracy_score': accuracy_score})
# Sort matches by accuracy score in descending order
matches = sorted(matches, key=lambda x: x['accuracy_score'], reverse=True)
return jsonify({'number_of_faces': len(unknown_encodings), 'matches': matches}), 200
return jsonify({'error': 'No recognizable faces found', 'number_of_faces': 0}), 404
if __name__ == '__main__':
app.run(debug=True, host="0.0.0.0", port=5005)