|
@@ -16,10 +16,19 @@ def should_have_parts(func):
|
|
|
|
|
|
class ImageWrapper(object):
|
|
class ImageWrapper(object):
|
|
@staticmethod
|
|
@staticmethod
|
|
- def read_image(im_path, mode="RGB"):
|
|
|
|
- # im = imread(im_path, pilmode=mode)
|
|
|
|
- im = Image.open(im_path, mode="r")
|
|
|
|
- return im
|
|
|
|
|
|
+ def read_image(im_path, mode="RGB", n_retries=5):
|
|
|
|
+ _read = lambda: Image.open(im_path, mode="r")
|
|
|
|
+ if n_retries <= 0:
|
|
|
|
+ assert isfile(im_path), "Image \"{}\" does not exist!".format(im_path)
|
|
|
|
+ return _read()
|
|
|
|
+ else:
|
|
|
|
+ for i in range(n_retries):
|
|
|
|
+ try:
|
|
|
|
+ return _read()
|
|
|
|
+ except Exception as e:
|
|
|
|
+ pass
|
|
|
|
+
|
|
|
|
+ raise RuntimeError("Reading image \"{}\" failed after {} n_retries! ({})".format(im_path, n_retries, e))
|
|
|
|
|
|
|
|
|
|
def __init__(self, im_path, label, parts=None, mode="RGB", part_rescale_size=None, center_cropped=True):
|
|
def __init__(self, im_path, label, parts=None, mode="RGB", part_rescale_size=None, center_cropped=True):
|
|
@@ -67,7 +76,6 @@ class ImageWrapper(object):
|
|
@im.setter
|
|
@im.setter
|
|
def im(self, value):
|
|
def im(self, value):
|
|
if isinstance(value, str):
|
|
if isinstance(value, str):
|
|
- assert isfile(value), "Image \"{}\" does not exist!".format(value)
|
|
|
|
self._im = ImageWrapper.read_image(value, mode=self.mode)
|
|
self._im = ImageWrapper.read_image(value, mode=self.mode)
|
|
self._im_path = value
|
|
self._im_path = value
|
|
else:
|
|
else:
|