def imgLoad(imgPath, color=True): """ Load an image converting from grayscale or alpha as needed. Input imgPath - image path color - flag for color format. True (default) loads as RGB while False loads as intensity (if image is already grayscale). Output image - an image with type np.float32 in range [0, 1] of size (H x W x 3) in RGB or of size (H x W x 1) in grayscale. """ # load try: img0 = skimage.io.imread(imgPath) img = skimage.img_as_float(img0).astype(np.float32) except: pr('unable to open img: {}'.format(imgPath)) return None # color channel if img.ndim == 2: img = img[:, :, np.newaxis] if color: img = np.tile(img, (1, 1, 3)) elif img.shape[2] == 4: img = img[:, :, :3] return img
def equal(nm, A, B): """ Check whether two matrix are equal or not. Input nm - name A - matrix 1 B - matrix 2 Output isEq - result, True | False """ # check type if not A.__class__ == B.__class__: pri.pr('{}, different types: {} vs {}'.format(nm, A.__class__, B.__class__)) return False # dictionary, check each key if A.__class__ == dict: keyAs = A.keys() keyBs = A.keys() keyAs.sort() keyBs.sort() if not equal(nm, keyAs, keyBs): return False for key in keyAs: if not equal(nm, A[key], B[key]): return False return True # list if A.__class__ == list: if not len(A) == len(B): pri.pr('{}, different lens: {} vs {}'.format(nm, len(A), len(B))) return False for i in range(len(A)): if not equal(nm, A[i], B[i]): return False return True # string if A.__class__ == str: if not A == B: pri.pr('{}, different strings: {} vs {}'.format(nm, A, B)) return False return True # check dimension if not A.shape == B.shape: pri.pr('{}, different size: {} vs {}'.format(nm, A.shape, B.shape)) return False # check value diff = max(abs((A - B).flatten())) isEq = diff < 1e-5 if isEq: pri.pr('{}, same'.format(nm)) else: pri.pr('{}, different values: diff = {}'.format(nm, diff)) return isEq