當前位置: 首頁>>代碼示例>>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;未經允許,請勿轉載。