Hot-keys on this page

r m x p   toggle line displays

j k   next/prev highlighted chunk

0   (zero) top of page

1   (one) first highlighted chunk

1

2

3

4

5

6

7

8

9

10

11

12

13

14

15

16

17

18

19

20

21

22

23

24

25

26

27

28

29

30

31

32

33

34

35

36

37

38

39

40

41

42

from director import vtkAll as vtk 

import PythonQt 

 

class ImageView(object): 

 

    def __init__(self): 

        self.view = PythonQt.dd.ddQVTKWidgetView() 

        self.view.setWindowTitle('Image View') 

        self.imageActor = vtk.vtkImageActor() 

        self.setImage(vtk.vtkImageData()) 

        self.view.renderer().AddActor(self.imageActor) 

        self.view.orientationMarkerWidget().Off() 

        self.view.renderer().SetBackground([0,0,0]) 

        self.view.renderer().SetBackground2([0,0,0]) 

        self.view.installImageInteractor() 

 

    def setImage(self, image): 

        self.imageActor.SetInput(image) 

 

    def getImage(self): 

        return self.imageActor.GetInput() 

 

    def resetCamera(self): 

        camera = self.view.camera() 

        camera.ParallelProjectionOn() 

        camera.SetFocalPoint(0,0,0) 

        camera.SetPosition(0,0,1) 

        camera.SetViewUp(0,1,0) 

 

        self.view.resetCamera() 

        self.fitImageToView() 

        self.view.render() 

 

    def fitImageToView(self): 

        camera = self.view.camera() 

        image = self.getImage() 

        imageWidth, imageHeight, _ = image.GetDimensions() 

 

        viewWidth, viewHeight = self.view.renderWindow().GetSize() 

        aspectRatio = float(viewWidth)/viewHeight 

        parallelScale = max(imageWidth/aspectRatio, imageHeight) / 2.0 

        camera.SetParallelScale(parallelScale)