Exemplo n.º 1
0
def upload():
    user_id = request.form['user-id']
    password = request.form['password'].encode('utf-8')
    name = request.form['name']
    age = request.form['age']
    latitude = request.form['latitude']
    longitude = request.form['longitude']
    gender = request.form['gender']
    child_status = request.form['child_status']

    db_session = DBSession()
    if check_auth(user_id, password) is 'success':
        count, flag = increment_count(user_id, child_status)
        if flag:
            image = base64.b64decode(request.form['image'])
            filename = user_id + '_' + child_status[0] + str(count) + '.jpg'
            print("Filename is ", filename)
            path = UPLOAD_FOLDER + '/' + filename
            with open(path, 'wb') as f:
                f.write(image)

            print("Path is", path)
            encodings = get_encoding(path)
            encoding_str = json.dumps(list(encodings))
            if encodings is not False:
                if child_status == "Missing":
                    db_session.add(
                        MissingImageEncoding(id=user_id,
                                             encoding=encoding_str,
                                             encoding_count=count))
                    db_session.add(
                        ImageDetailsMissing(id=user_id,
                                            encoding_count=count,
                                            name=name,
                                            age=age,
                                            gender=gender,
                                            latitude=latitude,
                                            longitude=longitude))
                else:
                    db_session.add(
                        FoundImageEncoding(id=user_id,
                                           encoding=encoding_str,
                                           encoding_count=count))
                    db_session.add(
                        ImageDetailsFound(id=user_id,
                                          encoding_count=count,
                                          name=name,
                                          age=age,
                                          gender=gender,
                                          latitude=latitude,
                                          longitude=longitude))
                db_session.commit()
                db_session.close()
                return "Upload Successful"
            else:
                return "No face found in Image"
        else:
            return "Max Images Sent"

    return "Upload Failed"
def test_small_example():
    s = program.binary_matrix([[1, 1, 1]])
    G = program.create_generator_matrix(2, 1)
    v = program.binary_matrix([program.get_encoding(s, G)])
    H = program.get_parity_check(2)
    syndromes = program.create_syndrome_dict(3, 2)
    res = program.decode_syndrome(v, syndromes, H)
    assert res == v[0]
def test_larger_example():
    start = program.binary_matrix([[1, 1, 0, 1, 0, 0, 1, 0, 1, 0, 0]])
    G = program.create_generator_matrix(4, 11)
    v = program.binary_matrix([program.get_encoding(start, G)])
    H = program.get_parity_check(4)
    syndromes = program.create_syndrome_dict(15, 4)
    res = program.decode_syndrome(v, syndromes, H)
    assert res == v[0]
Exemplo n.º 4
0
def test_for_one():
    a = program.binary_matrix([[1, 1, 1, 1]])
    G = program.create_generator_matrix(3, 4)
    assert program.get_encoding(a, G) == [1, 1, 1, 1, 1, 1, 1]
Exemplo n.º 5
0
def test_for_zero():
    a = program.binary_matrix([[0, 0, 0, 0]])
    G = program.create_generator_matrix(3, 4)
    assert program.get_encoding(a, G) == [0, 0, 0, 0, 0, 0, 0]
Exemplo n.º 6
0
def test_normal_encoding():
    a = program.binary_matrix([[1, 1, 1, 0]])
    G = program.create_generator_matrix(3, 4)
    assert program.get_encoding(a, G) == [1, 1, 1, 0, 0, 0, 0]
Exemplo n.º 7
0
def find_matches():
    user_id = request.form['user-id']
    password = request.form['password'].encode('utf-8')
    request_type = request.form['request-type']
    db_session = DBSession()

    if check_auth(user_id, password) is 'success':
        if request_type == 'Missing':
            known_users = [
                i[0] for i in db_session.query(MissingImageEncoding.id).filter(
                    MissingImageEncoding.id != user_id).distinct()
            ]
        elif request_type == 'Found':
            known_users = [
                i[0] for i in db_session.query(FoundImageEncoding.id).filter(
                    FoundImageEncoding.id != user_id).distinct()
            ]

        known_encodings = []
        known_labels = []
        print(known_users)

        for encoding_user in known_users:
            count = db_session.query(UserCount).filter_by(
                id=encoding_user).one()
            print(request_type == 'Missing', request_type == 'Found')
            if request_type == 'Missing':
                for i in range(count.missing_count):
                    encoding_user_by_count = db_session.query(
                        MissingImageEncoding).filter_by(id=encoding_user,
                                                        encoding_count=i +
                                                        1).first()
                    print(encoding_user_by_count)
                    known_encodings.append(
                        json.loads(encoding_user_by_count.encoding))
                    known_labels.append(encoding_user + '_M' + str(i + 1))
            elif request_type == 'Found':
                for i in range(count.found_count):
                    encoding_user_by_count = db_session.query(
                        FoundImageEncoding).filter_by(id=encoding_user,
                                                      encoding_count=i +
                                                      1).first()
                    print(encoding_user_by_count)
                    known_encodings.append(
                        json.loads(encoding_user_by_count.encoding))
                    known_labels.append(encoding_user + '_F' + str(i + 1))

        current_user = db_session.query(UserCount).filter_by(
            id=user_id).first()
        result = set()

        if request_type == 'Missing':
            for i in range(current_user.found_count):
                b = get_encoding('./api/static/img/' + user_id + "_F" +
                                 str(i + 1) + ".jpg")
                face_distances = face_recognition.face_distance(
                    np.array(known_encodings), b)
                for i in range(len(face_distances)):
                    if face_distances[i] < 0.6:
                        result.add((known_labels[i], str(face_distances[i])))
        elif request_type == 'Found':
            for i in range(current_user.missing_count):
                b = get_encoding('./api/static/img/' + user_id + "_M" +
                                 str(i + 1) + ".jpg")
                face_distances = face_recognition.face_distance(
                    np.array(known_encodings), b)
                for i in range(len(face_distances)):
                    if face_distances[i] < 0.6:
                        result.add((known_labels[i], str(face_distances[i])))

        image_data_match = []
        for i in result:
            img_id_match = i[0].split('_')[0]

            img_enc_match = None
            img_details_match = None
            if request_type == 'Found':
                img_enc_match = i[0].split('F')[1]
                img_details_match = db_session.query(
                    ImageDetailsFound).filter_by(
                        id=img_id_match, encoding_count=img_enc_match).one()
            elif request_type == 'Missing':
                img_enc_match = i[0].split('M')[1]
                img_details_match = db_session.query(
                    ImageDetailsMissing).filter_by(
                        id=img_id_match, encoding_count=img_enc_match).one()

            if (request_type[0] == 'F' or request_type[0] == 'M'):
                image_data_match.append({
                    'name':
                    img_details_match.name,
                    'gender':
                    img_details_match.gender,
                    'age':
                    img_details_match.age,
                    'latitude':
                    img_details_match.latitude,
                    'longitude':
                    img_details_match.longitude
                })

        result = list(result)
        for i in range(len(result)):
            result[i] += (image_data_match[i], )

        print(result)

        final_image_labels = set([
            generate_result(label, data)
            for label, _, data in sorted(result, key=itemgetter(1))
        ])
        print(",".join(list(final_image_labels)))
        return ",".join(list(final_image_labels))

    else:
        return "Authentication Failed"