import cv2 import numpy as np from skimage.segmentation import expand_labels def read_to_mask(f): img = cv2.imread(str(f), cv2.IMREAD_UNCHANGED)[:,:,::-1] mask = np.zeros(img.shape[:2], dtype=np.uint8) mask[img[:, :, 0] > 200] = 1 mask[img[:, :, 1] > 200] = 2 return mask def read_mask_from_path_gens(dict_gens, mapping=None): output = {k: dict() for k in dict_gens.keys()} for k, files in dict_gens.items(): for file in files: name = file.parent.stem if mapping is not None: name = mapping.get(name, name) mask = read_to_mask(file) mask = expand_labels(mask, 1) if output[k].get(name) is None: output[k][name] = [] output[k][name].append(mask) return output