HDRReader
Repository source: HDRReader
Description¶
Demonstrates how to read high-dynamic-range imaging files.
A callback is used to print out the color window (move the mouse horizontally over the image) and color level (move the mouse vertically over the image).
This is based on IO/Image/Testing/Cxx/TestHDRReader.cxx in the VTK source files.
Question
If you have a question about this example, please use the VTK Discourse Forum
Code¶
HDRReader.py
##!/usr/bin/env python3
# noinspection PyUnresolvedReferences
import vtkmodules.vtkRenderingOpenGL2
from vtkmodules.vtkIOImage import vtkHDRReader
from vtkmodules.vtkInteractionImage import vtkImageViewer
from vtkmodules.vtkRenderingCore import vtkRenderWindowInteractor
def get_program_parameters():
    import argparse
    description = 'Demonstrate the use of HDRReader'
    epilogue = '''
This example shows how to read in an HDR file.
A callback is used to print out the color window (move the mouse horizontally over the image)
 and color level (move the mouse vertically over the image).
   '''
    parser = argparse.ArgumentParser(description=description, epilog=epilogue,
                                     formatter_class=argparse.RawDescriptionHelpFormatter)
    parser.add_argument('file_name', help='Path to the hdr file e.g. Skyboxes/spiaggia_di_mondello_1k.hdr.')
    args = parser.parse_args()
    return args.file_name
def main():
    file_name = get_program_parameters()
    reader = vtkHDRReader(file_name=file_name)
    # Check that the image can be read.
    if not reader.CanReadFile(file_name):
        print('CanReadFile failed for ', file_name)
        return
    reader.UpdateInformation()
    # Get the whole extent.
    we = reader.data_extent
    reader.UpdateExtent(we)
    size = (we[1] - we[0], we[3] - we[2])
    # Visualize
    image_viewer = vtkImageViewer(input_data=reader.update().output, color_window=1, color_level=1, position=(0, 100),
                                  size=size)
    image_viewer.render_window.window_name = 'HDRReader'
    iren = vtkRenderWindowInteractor()
    image_viewer.SetupInteractor(iren)
    image_viewer.Render()
    iren.AddObserver('EndInteractionEvent', ColorCallback(image_viewer))
    iren.Start()
class ColorCallback(object):
    def __init__(self, image_viewer):
        self.image_viewer = image_viewer
    def __call__(self, caller, ev):
        print(f'Color window: {self.image_viewer.color_window} level: {self.image_viewer.color_level}')
if __name__ == '__main__':
    main()
