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]
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]
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]
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]
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"