API Reference#

class pupil_labs.surface_tracker.Camera(camera_matrix: numpy.ndarray, distortion_coefficients: numpy.ndarray)#

Bases: object

distort_and_project(points: numpy.ndarray)#
class pupil_labs.surface_tracker.CoordinateSpace(value)#

Bases: enum.Enum

An enumeration.

IMAGE_DISTORTED = 'image-distorted'#
IMAGE_UNDISTORTED = 'image-undistorted'#
SURFACE_DISTORTED = 'surface-distorted'#
SURFACE_UNDISTORTED = 'surface-undisitorted'#
class pupil_labs.surface_tracker.CornerId(value)#

Bases: enum.Enum

An enumeration.

BOTTOM_LEFT = (0, 1)#
BOTTOM_RIGHT = (1, 1)#
TOP_LEFT = (0, 0)#
TOP_RIGHT = (1, 0)#
static all_corners(starting_with: Optional[pupil_labs.surface_tracker.corner.CornerId] = None, clockwise: bool = True)#

Enumerate all corners.

Args:

starting_with: First CornerId in the returned list. clockwise: Direction of the returned list.

Returns:

List of CornerId

as_tuple() Tuple[float, float]#
static from_name(name: str)#
static from_tuple(value: Tuple[float, float])#
class pupil_labs.surface_tracker.Marker#

Bases: abc.ABC

abstract as_dict() dict#
abstract property coordinate_space: pupil_labs.surface_tracker.coordinate_space.CoordinateSpace#
abstract static from_dict(value: dict) pupil_labs.surface_tracker.marker.Marker#
static from_vertices(uid: MarkerId, undistorted_image_space_vertices: List[Tuple[int, int]], starting_with: pupil_labs.surface_tracker.corner.CornerId, clockwise: bool) pupil_labs.surface_tracker.marker.Marker#
abstract property uid: MarkerId#
vertices() List[Tuple[float, float]]#
pupil_labs.surface_tracker.MarkerId(x)#
class pupil_labs.surface_tracker.Surface#

Bases: abc.ABC

abstract as_dict() dict#
abstract static from_dict(value: dict) pupil_labs.surface_tracker.surface.Surface#
abstract property name: str#
abstract property orientation: pupil_labs.surface_tracker.orientation.SurfaceOrientation#
property registered_marker_uids: Set[MarkerId]#
abstract property uid: SurfaceId#
version: ClassVar[int] = None#
class pupil_labs.surface_tracker.SurfaceHeatmap(surface_uid: SurfaceId)#

Bases: object

class ColorFormat(value)#

Bases: enum.Enum

An enumeration.

RGB = 1#
property channel_count: int#
image(size: Tuple[int, int], color_format: Optional[pupil_labs.surface_tracker.heatmap.SurfaceHeatmap.ColorFormat] = None) numpy.ndarray#
pupil_labs.surface_tracker.SurfaceId(x)#
class pupil_labs.surface_tracker.SurfaceImageCrop(crop_size_in_image_space: Tuple[int, int], perspective_transform: numpy.ndarray)#

Bases: object

apply_to_image(image: numpy.ndarray) numpy.ndarray#
property size_in_image_space: Tuple[int, int]#
class pupil_labs.surface_tracker.SurfaceLocation#

Bases: abc.ABC

abstract as_dict() dict#
abstract static from_dict(value: dict) pupil_labs.surface_tracker.location.SurfaceLocation#
abstract property is_stale: bool#
abstract property number_of_markers_detected: int#
abstract property surface_uid: SurfaceId#
abstract property transform_matrix_from_image_to_surface_undistorted: numpy.ndarray#
abstract property transform_matrix_from_surface_to_image_undistorted: numpy.ndarray#
version: ClassVar[int] = None#
class pupil_labs.surface_tracker.SurfaceOrientation(surface_start_with: pupil_labs.surface_tracker.corner.CornerId = CornerId.TOP_LEFT, clockwise: bool = True)#

Bases: object

as_dict() dict#
property clockwise#
static from_dict(value: dict) pupil_labs.surface_tracker.orientation.SurfaceOrientation#
get_relative_rotation(clockwise=True)#
get_visual_anchor_surface_space()#
map_surface_corners_to_default(corner_dict)#
map_surface_corners_to_rotation(corner_dict)#
property surface_start_with#
class pupil_labs.surface_tracker.SurfaceTracker#

Bases: object

add_markers_to_surface(surface: pupil_labs.surface_tracker.surface.Surface, location: pupil_labs.surface_tracker.location.SurfaceLocation, markers: List[pupil_labs.surface_tracker.marker.Marker], ignore_location_staleness: bool = False)#
define_surface(name: str, markers: List[pupil_labs.surface_tracker.marker.Marker]) Optional[pupil_labs.surface_tracker.surface.Surface]#
get_relative_rotation(surface: pupil_labs.surface_tracker.surface.Surface) int#
locate_surface(surface: pupil_labs.surface_tracker.surface.Surface, markers: List[pupil_labs.surface_tracker.marker.Marker]) Optional[pupil_labs.surface_tracker.location.SurfaceLocation]#

Computes a SurfaceLocation based on a list of visible markers

locate_surface_image_crop(surface: pupil_labs.surface_tracker.surface.Surface, location: pupil_labs.surface_tracker.location.SurfaceLocation, camera: pupil_labs.surface_tracker.camera.Camera, width: Optional[int] = None, height: Optional[int] = None) pupil_labs.surface_tracker.image_crop.SurfaceImageCrop#
locate_surface_image_crop_with_heatmap(surface: pupil_labs.surface_tracker.surface.Surface, location: pupil_labs.surface_tracker.location.SurfaceLocation, camera: pupil_labs.surface_tracker.camera.Camera, points: List[Tuple[int, int]], width: Optional[int] = None, height: Optional[int] = None) -> (<class 'pupil_labs.surface_tracker.image_crop.SurfaceImageCrop'>, <class 'pupil_labs.surface_tracker.heatmap.SurfaceHeatmap'>)#
locate_surface_visual_anchors(surface: pupil_labs.surface_tracker.surface.Surface, location: pupil_labs.surface_tracker.location.SurfaceLocation) Optional[pupil_labs.surface_tracker.visual_anchors.SurfaceVisualAnchors]#
move_surface_corner_positions_in_image_space(surface: pupil_labs.surface_tracker.surface.Surface, location: pupil_labs.surface_tracker.location.SurfaceLocation, new_positions: Mapping[pupil_labs.surface_tracker.corner.CornerId, Tuple[int, int]], ignore_location_staleness: bool = False)#
remove_markers_from_surface(surface: pupil_labs.surface_tracker.surface.Surface, location: pupil_labs.surface_tracker.location.SurfaceLocation, marker_uids: List[MarkerId], ignore_location_staleness: bool = False)#
set_orientation(surface: pupil_labs.surface_tracker.surface.Surface, starting_with: pupil_labs.surface_tracker.corner.CornerId, clockwise: bool = True)#
surface_corner_positions_in_image_space(surface: pupil_labs.surface_tracker.surface.Surface, location: pupil_labs.surface_tracker.location.SurfaceLocation, corners: List[pupil_labs.surface_tracker.corner.CornerId]) Mapping[pupil_labs.surface_tracker.corner.CornerId, Tuple[int, int]]#

Return the corner positions in image space.

surface_points_in_image_space(surface: pupil_labs.surface_tracker.surface.Surface, location: pupil_labs.surface_tracker.location.SurfaceLocation, points: List[Tuple[float, float]]) List[Tuple[int, int]]#

Transform a list of points in surface space into a list of points in image space.

class pupil_labs.surface_tracker.SurfaceVisualAnchors(top_polyline: List[Tuple[float, float]], perimeter_polyline: List[Tuple[float, float]], title_anchor: Tuple[float, float], edit_surface_anchor: Tuple[float, float], edit_markers_anchor: Tuple[float, float])#

Bases: object

property edit_markers_anchor: Tuple[float, float]#
property edit_surface_anchor: Tuple[float, float]#
property perimeter_polyline: List[Tuple[float, float]]#
property title_anchor: Tuple[float, float]#
property top_polyline: List[Tuple[float, float]]#