def data(self, downsample = 1): if self._type == "image": Image = misc.imread(self._path)[:, :, 0:3] if downsample != 1: Image = tb.downsampleImage(Image, downsample) return Image[..., np.r_[2, 1, 0]].transpose((2, 0, 1)) elif self._type == "flow": flow = tb.readFlow(self._path) flow = flow[:, :, 0:2] if downsample != 1: flow = OpticalFlow.downsampleMedian(flow, downsample) flow = flow.transpose((2, 0, 1)) nanMask = np.isnan(flow) data = (flow * 32.0).astype(np.int16) data[nanMask] = np.iinfo(np.int16).max return data elif self._type == "leftdisparity": disparity = tb.readDisparity(self._path) nanMask = np.isnan(disparity) disparity *= -1 if downsample != 1: raise Exception("no downsampling implemented for disparity") data = (disparity * 32.0).astype(np.int16) data[nanMask] = np.iinfo(np.int16).max return data elif self._type == "rightdisparity": disparity = tb.readDisparity(self._path) nanMask = np.isnan(disparity) if downsample != 1: raise Exception("no downsampling implemented for disparity") data = (disparity * 32.0).astype(np.int16) data[nanMask] = np.iinfo(np.int16).max return data elif self._type == "leftdisparitychange": disparityChange = tb.readDisparity(self._path) nanMask = np.isnan(disparityChange) disparityChange *= -1 if downsample != 1: raise Exception("no downsampling implemented for disparity") data = (disparityChange * 32.0).astype(np.int16) data[nanMask] = np.iinfo(np.int16).max return data elif self._type == "rightdisparitychange": disparityChange = tb.readDisparity(self._path) nanMask = np.isnan(disparityChange) if downsample != 1: raise Exception("no downsampling implemented for disparity") data = (disparityChange * 32.0).astype(np.int16) data[nanMask] = np.iinfo(np.int16).max return data else: raise Exception('unhandled data type')
def dims(self, downsample = 1): if self._type == "image": Image = misc.imread(self._path)[:, :, 0:3] if downsample != 1: Image = tb.downsampleImage(Image, downsample) return (Image.shape[1], Image.shape[0]) raise Exception('dimensions not implemented for datatype')