this is a very simple example of a web service that recognizes faces in uploaded images upload an image file and it will check if the image contains a picture of barack obama the result is returned as json for example curl xpost f fileobama2 jpg http 127 0 0 1 5001 returns facefoundinimage true ispictureofobama true this example is based on the flask file upload example http flask pocoo orgdocs0 12patternsfileuploads note this example requires flask to be installed you can install it with pip pip3 install flask you can change this to any folder on your system check if a valid image file was uploaded the image file seems valid detect faces and return the result if no valid image file was uploaded show the file upload form def detectfacesinimagefilestream precalculated face encoding of obama generated with facerecognition faceencodingsimg knownfaceencoding 0 09634063 0 12095481 0 00436332 0 07643753 0 0080383 0 01902981 0 07184699 0 09383309 0 18518871 0 09588896 0 23951106 0 0986533 0 22114635 0 1363683 0 04405268 0 11574756 0 19899382 0 09597053 0 11969153 0 12277931 0 03416885 0 00267565 0 09203379 0 04713435 0 12731361 0 35371891 0 0503444 0 17841317 0 00310897 0 09844551 0 06910533 0 00503746 0 18466514 0 09851682 0 02903969 0 02174894 0 02261871 0 0032102 0 20312519 0 02999607 0 11646006 0 09432904 0 02774341 0 22102901 0 26725179 0 06896867 0 00490024 0 09441824 0 11115381 0 22592428 0 06230862 0 16559327 0 06232892 0 03458837 0 09459756 0 18777156 0 00654241 0 08582542 0 13578284 0 0150229 0 00670836 0 08195844 0 04346499 0 03347827 0 20310158 0 09987706 0 12370517 0 06683611 0 12704916 0 02160804 0 00984683 0 00766284 0 18980607 0 19641446 0 22800779 0 09010898 0 39178532 0 18818057 0 20875394 0 03097027 0 21300618 0 02532415 0 07938635 0 01000703 0 07719778 0 12651891 0 04318593 0 06219772 0 09163868 0 05039065 0 04922386 0 21839413 0 02394437 0 06173781 0 0292527 0 06160797 0 15553983 0 02440624 0 17509389 0 0630486 0 01428208 0 03637431 0 03971229 0 13983178 0 23006812 0 04999552 0 0108454 0 03970895 0 02501768 0 08157793 0 03224047 0 04502571 0 0556995 0 24374914 0 25514284 0 24795187 0 04060191 0 17597422 0 07966681 0 01920104 0 01194376 0 02300822 0 17204897 0 0596558 0 05307484 0 07417042 0 07126575 0 00209804 load the uploaded image file img facerecognition loadimagefilefilestream get face encodings for any faces in the uploaded image unknownfaceencodings facerecognition faceencodingsimg facefound false isobama false if lenunknownfaceencodings 0 facefound true see if the first face in the uploaded image matches the known face of obama matchresults facerecognition comparefacesknownfaceencoding unknownfaceencodings0 if matchresults0 isobama true return the result as json result facefoundinimage facefound ispictureofobama isobama return jsonifyresult if name main app runhost 0 0 0 0 port5001 debugtrue this is a _very simple_ example of a web service that recognizes faces in uploaded images upload an image file and it will check if the image contains a picture of barack obama the result is returned as json for example curl xpost f file obama2 jpg http 127 0 0 1 5001 returns face_found_in_image true is_picture_of_obama true this example is based on the flask file upload example http flask pocoo org docs 0 12 patterns fileuploads note this example requires flask to be installed you can install it with pip pip3 install flask you can change this to any folder on your system check if a valid image file was uploaded the image file seems valid detect faces and return the result if no valid image file was uploaded show the file upload form doctype html title is this a picture of obama title h1 upload a picture and see if it s a picture of obama h1 form method post enctype multipart form data input type file name file input type submit value upload form pre calculated face encoding of obama generated with face_recognition face_encodings img load the uploaded image file get face encodings for any faces in the uploaded image see if the first face in the uploaded image matches the known face of obama return the result as json
import face_recognition
from flask import Flask, jsonify, request, redirect


ALLOWED_EXTENSIONS = {'png', 'jpg', 'jpeg', 'gif'}

app = Flask(__name__)


def allowed_file(filename):
    return '.' in filename and \
           filename.rsplit('.', 1)[1].lower() in ALLOWED_EXTENSIONS


@app.route('/', methods=['GET', 'POST'])
def upload_image():
    
    if request.method == 'POST':
        if 'file' not in request.files:
            return redirect(request.url)

        file = request.files['file']

        if file.filename == '':
            return redirect(request.url)

        if file and allowed_file(file.filename):
            
            return detect_faces_in_image(file)

    
    return 


def detect_faces_in_image(file_stream):
    
    known_face_encoding = [-0.09634063,  0.12095481, -0.00436332, -0.07643753,  0.0080383,
                            0.01902981, -0.07184699, -0.09383309,  0.18518871, -0.09588896,
                            0.23951106,  0.0986533 , -0.22114635, -0.1363683 ,  0.04405268,
                            0.11574756, -0.19899382, -0.09597053, -0.11969153, -0.12277931,
                            0.03416885, -0.00267565,  0.09203379,  0.04713435, -0.12731361,
                           -0.35371891, -0.0503444 , -0.17841317, -0.00310897, -0.09844551,
                           -0.06910533, -0.00503746, -0.18466514, -0.09851682,  0.02903969,
                           -0.02174894,  0.02261871,  0.0032102 ,  0.20312519,  0.02999607,
                           -0.11646006,  0.09432904,  0.02774341,  0.22102901,  0.26725179,
                            0.06896867, -0.00490024, -0.09441824,  0.11115381, -0.22592428,
                            0.06230862,  0.16559327,  0.06232892,  0.03458837,  0.09459756,
                           -0.18777156,  0.00654241,  0.08582542, -0.13578284,  0.0150229 ,
                            0.00670836, -0.08195844, -0.04346499,  0.03347827,  0.20310158,
                            0.09987706, -0.12370517, -0.06683611,  0.12704916, -0.02160804,
                            0.00984683,  0.00766284, -0.18980607, -0.19641446, -0.22800779,
                            0.09010898,  0.39178532,  0.18818057, -0.20875394,  0.03097027,
                           -0.21300618,  0.02532415,  0.07938635,  0.01000703, -0.07719778,
                           -0.12651891, -0.04318593,  0.06219772,  0.09163868,  0.05039065,
                           -0.04922386,  0.21839413, -0.02394437,  0.06173781,  0.0292527 ,
                            0.06160797, -0.15553983, -0.02440624, -0.17509389, -0.0630486 ,
                            0.01428208, -0.03637431,  0.03971229,  0.13983178, -0.23006812,
                            0.04999552,  0.0108454 , -0.03970895,  0.02501768,  0.08157793,
                           -0.03224047, -0.04502571,  0.0556995 , -0.24374914,  0.25514284,
                            0.24795187,  0.04060191,  0.17597422,  0.07966681,  0.01920104,
                           -0.01194376, -0.02300822, -0.17204897, -0.0596558 ,  0.05307484,
                            0.07417042,  0.07126575,  0.00209804]

    
    img = face_recognition.load_image_file(file_stream)
    
    unknown_face_encodings = face_recognition.face_encodings(img)

    face_found = False
    is_obama = False

    if len(unknown_face_encodings) > 0:
        face_found = True
        
        match_results = face_recognition.compare_faces([known_face_encoding], unknown_face_encodings[0])
        if match_results[0]:
            is_obama = True

    
    result = {
        "face_found_in_image": face_found,
        "is_picture_of_obama": is_obama
    }
    return jsonify(result)

if __name__ == "__main__":
    app.run(host='0.0.0.0', port=5001, debug=True)