当前位置: 首页>>代码示例>>Python>>正文


Python OpenEXR.InputFile方法代码示例

本文整理汇总了Python中OpenEXR.InputFile方法的典型用法代码示例。如果您正苦于以下问题:Python OpenEXR.InputFile方法的具体用法?Python OpenEXR.InputFile怎么用?Python OpenEXR.InputFile使用的例子?那么恭喜您, 这里精选的方法代码示例或许可以为您提供帮助。您也可以进一步了解该方法所在OpenEXR的用法示例。


在下文中一共展示了OpenEXR.InputFile方法的15个代码示例,这些例子默认根据受欢迎程度排序。您可以为喜欢或者感觉有用的代码点赞,您的评价将有助于系统推荐出更棒的Python代码示例。

示例1: __init__

# 需要导入模块: import OpenEXR [as 别名]
# 或者: from OpenEXR import InputFile [as 别名]
def __init__(self, frame_id, exr_path, use_log=True, blur_size=0, use_scharr=True):
        self.frame_id = frame_id
        self.exr_img = OpenEXR.InputFile(exr_path)
        self.img_raw = extract_grayscale(self.exr_img)
        
        # self.img is actually log(eps+img), blurred
        self.img = Frame.preprocess_image(self.img_raw.copy(), use_log=True, blur_size=blur_size)
        
        # self.img_raw is the non-logified image, blurred        
        self.img_raw = Frame.preprocess_image(self.img_raw, use_log=False, blur_size=blur_size)
        
        # compute the gradient using
        # nabla(log(eps+I)) = nabla(I) / (eps+I) (chain rule)
        # (hopefully better precision than directly
        # computing the numeric gradient of the log img)
        eps = 0.001
        self.gradient = compute_gradient(self.img_raw, use_scharr)
        self.gradient[:,:,0] = self.gradient[:,:,0] / (eps+self.img_raw)
        self.gradient[:,:,1] = self.gradient[:,:,1] / (eps+self.img_raw)
        self.z = extract_depth(self.exr_img) 
开发者ID:uzh-rpg,项目名称:rpg_davis_simulator,代码行数:22,代码来源:dataset_utils.py

示例2: load_hdr_as_tensor

# 需要导入模块: import OpenEXR [as 别名]
# 或者: from OpenEXR import InputFile [as 别名]
def load_hdr_as_tensor(img_path):
    """Converts OpenEXR image to torch float tensor."""

    # Read OpenEXR file
    if not OpenEXR.isOpenExrFile(img_path):
        raise ValueError(f'Image {img_path} is not a valid OpenEXR file')
    src = OpenEXR.InputFile(img_path)
    pixel_type = Imath.PixelType(Imath.PixelType.FLOAT)
    dw = src.header()['dataWindow']
    size = (dw.max.x - dw.min.x + 1, dw.max.y - dw.min.y + 1)
    
    # Read into tensor
    tensor = torch.zeros((3, size[1], size[0]))
    for i, c in enumerate('RGB'):
        rgb32f = np.fromstring(src.channel(c, pixel_type), dtype=np.float32)
        tensor[i, :, :] = torch.from_numpy(rgb32f.reshape(size[1], size[0]))
        
    return tensor 
开发者ID:joeylitalien,项目名称:noise2noise-pytorch,代码行数:20,代码来源:utils.py

示例3: exr_to_png

# 需要导入模块: import OpenEXR [as 别名]
# 或者: from OpenEXR import InputFile [as 别名]
def exr_to_png(exr_path):
        depth_path = exr_path.replace('.png0001.exr', '.png')
        exr_image = OpenEXR.InputFile(exr_path)
        dw = exr_image.header()['dataWindow']
        (width, height) = (dw.max.x - dw.min.x + 1, dw.max.y - dw.min.y + 1)

        def read_exr(s, width, height):
            mat = np.fromstring(s, dtype=np.float32)
            mat = mat.reshape(height, width)
            return mat

        dmap, _, _ = [read_exr(s, width, height) for s in exr_image.channels('BGR', Imath.PixelType(Imath.PixelType.FLOAT))]
        dmap = Image.fromarray((dmap != 1).astype(np.int32))
        dmap.save(depth_path)
        exr_image.close()
        os.system('rm {}'.format(exr_path)) 
开发者ID:zju3dv,项目名称:pvnet-rendering,代码行数:18,代码来源:render_utils.py

示例4: check_exr

# 需要导入模块: import OpenEXR [as 别名]
# 或者: from OpenEXR import InputFile [as 别名]
def check_exr(exr_files, channel_names=['R', 'G', 'B']):
    """Check that exr_files (a list of EXR file(s)) have the requested channels
    and have the same data window size. Return image width and height.
    """
    if not list(channel_names):
        raise ValueError("channel_names is empty")
    if isinstance(exr_files, OpenEXR.InputFile):    # single exr file
        exr_files = [exr_files]
    elif not isinstance(exr_files, list):
        raise TypeError("type(exr_files): {}, should be str or list".format(type(exr_files)))
    # Check data window size
    data_windows = [str(exr.header()['dataWindow']) for exr in exr_files]
    if any(dw != data_windows[0] for dw in data_windows):
        raise ValueError("input and groundtruth .exr images have different size")
    # Check channel to read are present in given exr file(s)
    channels_headers = [exr.header()['channels'] for exr in exr_files]
    for channels in channels_headers:
        if any(c not in list(channels.keys()) for c in channel_names):
            raise ValueError("Try to read channels {} of an exr image with channels {}"
                .format(channel_names, list(channels.keys())))
    # Compute the size
    dw = exr_files[0].header()['dataWindow']
    width = dw.max.x - dw.min.x + 1
    height = dw.max.y - dw.min.y + 1
    return width, height 
开发者ID:TheFoundryVisionmongers,项目名称:nuke-ML-server,代码行数:27,代码来源:util.py

示例5: read_crop_exr_pair

# 需要导入模块: import OpenEXR [as 别名]
# 或者: from OpenEXR import InputFile [as 别名]
def read_crop_exr_pair(exr_path_in, exr_path_gt, crop_size=256, channel_names=['R', 'G', 'B']):
    """Read requested channels of input and groundtruth .exr image paths
    and return the same random crop of both
    """
    # Open the input file
    exr_file_in = OpenEXR.InputFile(exr_path_in)
    exr_file_gt = OpenEXR.InputFile(exr_path_gt)
    width, height = check_exr([exr_file_in, exr_file_gt], channel_names)
    # Check exr image width and height >= crop_size
    if height < crop_size or width < crop_size:
        raise ValueError("Input images size should be superior or equal to crop_size: {} < ({},{})"
            .format((width, height), crop_size, crop_size))
    # Get random crop value
    randw = np.random.randint(0, width-crop_size) if width-crop_size > 0 else 0
    randh = np.random.randint(0, height-crop_size) if height-crop_size > 0 else 0 
    # Get the crop of input and groundtruth .exr images
    exr_crop_in = read_crop_exr(exr_file_in, (width, height), randw, randh, crop_size, channel_names)
    exr_crop_gt = read_crop_exr(exr_file_gt, (width, height), randw, randh, crop_size, channel_names)
    return [exr_crop_in, exr_crop_gt] 
开发者ID:TheFoundryVisionmongers,项目名称:nuke-ML-server,代码行数:21,代码来源:util.py

示例6: test_reading_unknown_exr_type_fails

# 需要导入模块: import OpenEXR [as 别名]
# 或者: from OpenEXR import InputFile [as 别名]
def test_reading_unknown_exr_type_fails(self):
    image, channels = _MakeTestImage(3, np.float16)
    with tempfile.NamedTemporaryFile() as temp:
      exr.write_exr(temp.name, image, channels)
      exr_file = OpenEXR.InputFile(temp.name)
      # Deliberately break the R channel header info. A mock InputFile is
      # required to override the header() method.
      header_dict = exr_file.header()
      header_dict['channels']['R'].type.v = -1  # Any bad value will do.
      make_mock_exr = collections.namedtuple('MockExr', ['header', 'channel'])
      mock_broken_exr = make_mock_exr(lambda: header_dict, exr_file.channel)
      with self.assertRaisesRegexp(RuntimeError, 'Unknown EXR channel type'):
        _ = exr.channels_to_ndarray(mock_broken_exr, ['R', 'G', 'B']) 
开发者ID:tensorflow,项目名称:graphics,代码行数:15,代码来源:exr_test.py

示例7: channels_to_ndarray

# 需要导入模块: import OpenEXR [as 别名]
# 或者: from OpenEXR import InputFile [as 别名]
def channels_to_ndarray(exr, channel_names):
  """Copies channels from an OpenEXR.InputFile into a numpy array.

  If the EXR image is of size (width, height), the result will be a numpy array
  of shape (height, width, len(channel_names)), where the last dimension holds
  the channels in the order they were specified in channel_names. The requested
  channels must all have the same datatype.

  Args:
    exr: An OpenEXR.InputFile that is already open.
    channel_names: A list of strings naming the channels to read.

  Returns:
    A numpy ndarray.

  Raises:
    ValueError: If the channels have different datatypes.
    RuntimeError: If a channel has an unknown type.
  """
  channels_header = exr.header()['channels']
  window = exr.header()['dataWindow']
  width = window.max.x - window.min.x + 1
  height = window.max.y - window.min.y + 1

  def read_channel(channel):
    """Reads a single channel from the EXR."""
    channel_type = channels_header[channel].type
    try:
      numpy_type = _exr_to_np[channel_type.v]
    except KeyError:
      raise RuntimeError('Unknown EXR channel type: %s' % str(channel_type))
    flat_buffer = np.frombuffer(exr.channel(channel), numpy_type)
    return np.reshape(flat_buffer, [height, width])

  channels = [read_channel(c) for c in channel_names]
  if any([channels[0].dtype != c.dtype for c in channels[1:]]):
    raise ValueError('Channels have mixed datatypes: %s' %
                     ', '.join([str(c.dtype) for c in channels]))
  # Stack the arrays so that the channels dimension is the last (fastest
  # changing) dimension.
  return np.stack(channels, axis=-1) 
开发者ID:tensorflow,项目名称:graphics,代码行数:43,代码来源:exr.py

示例8: read_exr

# 需要导入模块: import OpenEXR [as 别名]
# 或者: from OpenEXR import InputFile [as 别名]
def read_exr(filename, channel_names=None):
  """Opens an EXR file and copies the requested channels into an ndarray.

  The Python OpenEXR wrapper uses a dictionary for the channel header, so the
  ordering of the channels in the underlying file is lost. If channel_names is
  not passed, this function orders the output channels with any present RGBA
  channels first, followed by the remaining channels in alphabetical order.
  By convention, RGBA channels are named 'R', 'G', 'B', 'A', so this function
  looks for those strings.

  Args:
    filename: The name of the EXR file.
    channel_names: A list of strings naming the channels to read. If None, all
      channels will be read.

  Returns:
    A numpy array containing the image data, and a list of the corresponding
      channel names.
  """
  exr = OpenEXR.InputFile(filename)
  if channel_names is None:
    remaining_channel_names = list(exr.header()['channels'].keys())
    conventional_rgba_names = ['R', 'G', 'B', 'A']
    present_rgba_names = []
    # Pulls out any present RGBA names in RGBA order.
    for name in conventional_rgba_names:
      if name in remaining_channel_names:
        present_rgba_names.append(name)
        remaining_channel_names.remove(name)
    channel_names = present_rgba_names + sorted(remaining_channel_names)

  return channels_to_ndarray(exr, channel_names), channel_names 
开发者ID:tensorflow,项目名称:graphics,代码行数:34,代码来源:exr.py

示例9: readEXR

# 需要导入模块: import OpenEXR [as 别名]
# 或者: from OpenEXR import InputFile [as 别名]
def readEXR(fname,RESOLUTION):
	channel_list = ["B","G","R"]
	file = OpenEXR.InputFile(fname)
	dw = file.header()["dataWindow"]
	height,width = RESOLUTION,RESOLUTION
	FLOAT = Imath.PixelType(Imath.PixelType.FLOAT)
	vectors = [np.array(array.array("f",file.channel(c,FLOAT))) for c in channel_list]
	depth = vectors[0].reshape([height,width])
	return depth 
开发者ID:chenhsuanlin,项目名称:3D-point-cloud-generation,代码行数:11,代码来源:convertEXR.py

示例10: open

# 需要导入模块: import OpenEXR [as 别名]
# 或者: from OpenEXR import InputFile [as 别名]
def open(filename):
  # Check if the file is an EXR file
  if not OpenEXR.isOpenExrFile(filename):
    raise Exception("File '%s' is not an EXR file." % filename)
  # Return an `InputFile`
  return InputFile(OpenEXR.InputFile(filename), filename) 
开发者ID:tvogels,项目名称:pyexr,代码行数:8,代码来源:exr.py

示例11: parser_exr

# 需要导入模块: import OpenEXR [as 别名]
# 或者: from OpenEXR import InputFile [as 别名]
def parser_exr(exr_path):
    file = OpenEXR.InputFile(exr_path)
    header = file.header()

    h, w = header["displayWindow"].max.y + 1, header["displayWindow"].max.x + 1
    exr = ExrDict()
    for key in header["channels"]:
        assert header["channels"][key].type.__str__() == "FLOAT"
        exr[key] = np.fromstring(file.channel(key), dtype=np.float32).reshape(h, w)
    file.close()
    return exr 
开发者ID:DIYer22,项目名称:bpycv,代码行数:13,代码来源:exr_image_parser.py

示例12: read_exr

# 需要导入模块: import OpenEXR [as 别名]
# 或者: from OpenEXR import InputFile [as 别名]
def read_exr(exr_path, height, width):
    file = OpenEXR.InputFile(exr_path)
    depth_arr = array.array('f', file.channel('R', Imath.PixelType(Imath.PixelType.FLOAT)))
    depth = np.array(depth_arr).reshape((height, width))
    depth[depth < 0] = 0
    depth[np.isinf(depth)] = 0
    return depth 
开发者ID:wentaoyuan,项目名称:pcn,代码行数:9,代码来源:process_exr.py

示例13: read_exr

# 需要导入模块: import OpenEXR [as 别名]
# 或者: from OpenEXR import InputFile [as 别名]
def read_exr(exr_path, channel_names=['R', 'G', 'B']):
    """Read requested channels of an exr and return them in a numpy array
    """
    # Open and check the input file
    exr_file = OpenEXR.InputFile(exr_path)
    width, height = check_exr(exr_file, channel_names)
    # Copy channels from an exr file into a numpy array
    exr_numpy = [np.frombuffer(exr_file.channel(c, EXR_PIX_TYPE), dtype=EXR_NP_TYPE)
        .reshape(height, width) for c in channel_names]
    exr_numpy = np.stack(exr_numpy, axis=-1)
    return exr_numpy 
开发者ID:TheFoundryVisionmongers,项目名称:nuke-ML-server,代码行数:13,代码来源:util.py

示例14: open_multilayer_exr_layers

# 需要导入模块: import OpenEXR [as 别名]
# 或者: from OpenEXR import InputFile [as 别名]
def open_multilayer_exr_layers(inputfile, layers):
    """
    Load a list of images, each corresponding to a layer of an OpenEXR file.

    Note that "layer" does not correspond to a single color channel, like "R",
    but rather, a group of 3 color channels.

    :param inputfile: string filename
    :param layers: list of string layer names
    """
    f = OpenEXR.InputFile(inputfile)
    header = f.header()
    dw = header['dataWindow']
    cols, rows = dw.max.x - dw.min.x + 1, dw.max.y - dw.min.y + 1

    # load channels
    FLOAT = Imath.PixelType(Imath.PixelType.FLOAT)
    images = []
    for layer in layers:
        channels = LAYER_CHANNELS[layer]
        image = np.empty((rows, cols, 3), dtype=np.float32)
        for (i, c) in enumerate(channels):
            data = f.channel(c, FLOAT)
            image[:, :, i] = np.fromstring(data, dtype=np.float32) \
                .reshape((rows, cols))
        images.append(image)

    return images


#def denoise_indirect_image(img):
    #denoised = np.empty_like(img)
    #for c in xrange(3):
        #denoised[:, :, c] = median_filter(
            #img[:, :, c],
            #mode='reflect',
            #footprint=[
                #[0, 1, 0],
                #[1, 1, 1],
                #[0, 1, 0],
            #]
        #)
    #return denoised 
开发者ID:seanbell,项目名称:opensurfaces,代码行数:45,代码来源:synthetic.py

示例15: rigid_flow

# 需要导入模块: import OpenEXR [as 别名]
# 或者: from OpenEXR import InputFile [as 别名]
def rigid_flow(self):

    	V, Omega, dt = self.compute_velocity_from_msg(self.pose_data[200,:], self.pose_data[204,:])

    	# print(self.depth_data[1][1])

    	depth_image0 = OpenEXR.InputFile(self.depth_data[200][1])
    	dw0 = depth_image0.header()['dataWindow']
    	size0 = (dw0.max.x - dw0.min.x + 1, dw0.max.y - dw0.min.y + 1)
    	pt0 = Imath.PixelType(Imath.PixelType.FLOAT)
    	depth0 = np.fromstring(depth_image0.channel("Z"), dtype=np.float32)
        depth0.shape = (size0[1], size0[0])  # Numpy arrays are (row, col)

        depth_image1 = OpenEXR.InputFile(self.depth_data[204][1])
        dw1 = depth_image1.header()['dataWindow']
        size1 = (dw1.max.x - dw1.min.x + 1, dw1.max.y - dw1.min.y + 1)
        pt1 = Imath.PixelType(Imath.PixelType.FLOAT)
        depth1 = np.fromstring(depth_image1.channel("Z"), dtype=np.float32)
        depth1.shape = (size1[1], size1[0])  # Numpy arrays are (row, col)

        depth = (depth0+depth1)/2

    	flow_x_dist, flow_y_dist = self.compute_flow_single_frame(V,
                                                                  Omega,
                                                                  depth,
                                                                  dt)
    	print(flow_x_dist, flow_y_dist)

    	flow = np.dstack((flow_x_dist, flow_y_dist))
        flow = np.float32(flow)
    	# verfication 
    	img1 = cv2.imread(self.image_data[200][1],1)
        # img1 = np.float32(img1)
        print(img1.shape)
    	img2 = cv2.imread(self.image_data[204][1], 1)
        # img2 = np.float32(img2)
        print(img1.shape, flow.dtype)

    	warpped_img1 = self.warp_image(img2, flow)
        # warpped_img1 = self.warp_flow(img2, flow)

        cv2.imshow('warpped_img1', cv2.subtract(img1, warpped_img1))


        first_img = self.colorize_image(flow_x_dist, flow_y_dist)
        cv2.imshow('image',first_img)
        cv2.waitKey(0) 
开发者ID:prgumd,项目名称:EVDodgeNet,代码行数:49,代码来源:flow.py


注:本文中的OpenEXR.InputFile方法示例由纯净天空整理自Github/MSDocs等开源代码及文档管理平台,相关代码片段筛选自各路编程大神贡献的开源项目,源码版权归原作者所有,传播和使用请参考对应项目的License;未经允许,请勿转载。