diff --git a/indicoio/utils/image.py b/indicoio/utils/image.py index 97b7f85..70fb19e 100644 --- a/indicoio/utils/image.py +++ b/indicoio/utils/image.py @@ -37,8 +37,8 @@ def image_preprocess(image, size=(48,48), batch=False): elif isinstance(image, Image.Image): out_image = image elif type(image).__name__ == "ndarray": # image is from numpy/scipy - if "float" in str(image.dtype) and image.min() > 0 and image.max() < 1: - image *= 255 + if "float" in str(image.dtype) and image.min() >= 0 and image.max() <= 1: + image *= 255. try: out_image = Image.fromarray(image.astype("uint8")) except TypeError as e: @@ -102,7 +102,7 @@ def process_list_image(_list): if data_type == float: seq_obj.append((int(elem[0] * 255), int(elem[1] * 255), int(elem[2] * 255))) else: - seq_obj.append(elem[0:3]) + seq_obj.append(tuple(elem[0:3])) elif data_type == float: #Grayscale 0 - 1.0f seq_obj.append((int(elem * 255), ) * 3) diff --git a/tests/test_remote.py b/tests/test_remote.py index 30daba7..580247f 100644 --- a/tests/test_remote.py +++ b/tests/test_remote.py @@ -291,6 +291,14 @@ class FullAPIRun(unittest.TestCase): self.assertEqual(len(response), 48) self.check_range(response) + def test_rgba_int_array_facial_features(self): + test_face = generate_rgba_int_array((48, 48)) + response = facial_features(test_face) + + self.assertTrue(isinstance(response, list)) + self.assertEqual(len(response), 48) + self.check_range(response) + def test_good_int_array_facial_features(self): fer_set = set(['Angry', 'Sad', 'Neutral', 'Surprise', 'Fear', 'Happy']) test_face = generate_int_array((48,48)) @@ -502,7 +510,10 @@ def generate_array(size): return [[random.random() for _ in xrange(size[0])] for _ in xrange(size[1])] def generate_int_array(size): - return [[random.randint(0, 50) for _ in xrange(size[0])] for _ in xrange(size[1])] + return [[random.randint(0, 255) for _ in xrange(size[0])] for _ in xrange(size[1])] + +def generate_rgba_int_array(size): + return [[[random.randint(0, 255) for _ in xrange(3)] for _ in xrange(size[0])] for _ in xrange(size[1])] if __name__ == "__main__":