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

import director.vtkAll as vtk 

import director.vtkNumpy as vnp 

import drc as lcmdrc 

import maps as lcmmaps 

import numpy as np 

import time 

 

class DepthImageProvider(object): 

 

    def __init__(self): 

 

        self.source = vtk.vtkMapServerSource() 

        self.source.Start() 

 

    def waitForSceneHeight(self): 

        viewId = lcmmaps.data_request_t.HEIGHT_MAP_SCENE 

        while self.source.GetCurrentMapId(viewId) < 0: 

            time.sleep(0.1) 

 

    def getSceneHeightData(self): 

        return self.getDepthMapData(lcmmaps.data_request_t.HEIGHT_MAP_SCENE) 

 

    def getDepthMapData(self, viewId): 

 

        mapId = self.source.GetCurrentMapId(viewId) 

        if mapId < 0: 

            return None, None 

 

        depthImage = vtk.vtkImageData() 

        transform = vtk.vtkTransform() 

        # print "getting depth image for viewId {:d} mapId {:d}".format(viewId, mapId) 

        self.source.GetDataForMapId(viewId, mapId, depthImage, transform) 

 

        dims = depthImage.GetDimensions() 

        d = vnp.getNumpyFromVtk(depthImage, 'ImageScalars') 

        d = d.reshape(dims[1], dims[0]) 

        t = np.array([[transform.GetMatrix().GetElement(r, c) for c in xrange(4)] for r in xrange(4)]) 

 

        return d, t