def _depth_im_from_pointcloud(self, msg):
        """ Convert a pointcloud2 message to a depth image. """
        # set format
        if self._format is None:
            self._set_format(msg)

        # rescale camera intr in case binning is turned on
        if msg.height != self._camera_intr.height:
            rescale_factor = float(msg.height) / self._camera_intr.height
            self._camera_intr = self._camera_intr.resize(rescale_factor)
            
        # read num points
        num_points = msg.height * msg.width
            
        # read buffer
        raw_tup = struct.Struct(self._format).unpack_from(msg.data, 0)
        raw_arr = np.array(raw_tup)

        # subsample depth values and reshape
        depth_ind = 2 + 4 * np.arange(num_points)
        depth_buf = raw_arr[depth_ind]
        depth_arr = depth_buf.reshape(msg.height, msg.width)
        depth_im = DepthImage(depth_arr, frame=self._frame)

        return depth_im
def _depth_im_from_pointcloud ( self , msg ) : if self . _format is None : self . _set_format ( msg ) if msg . height != self . _camera_intr . height : rescale_factor = float ( msg . height ) / self . _camera_intr . height self . _camera_intr = self . _camera_intr . resize ( rescale_factor ) num_points = msg . height * msg . width raw_tup = struct . Struct ( self . _format ) . unpack_from ( msg . data , 0 ) raw_arr = np . array ( raw_tup ) depth_ind = 2 + 4 * np . arange ( num_points ) depth_buf = raw_arr [ depth_ind ] depth_arr = depth_buf . reshape ( msg . height , msg . width ) depth_im = DepthImage ( depth_arr , frame = self . _frame ) return depth_im
Convert a pointcloud2 message to a depth image.