telemetry.internal.image_processing.screen_finder | index telemetry/internal/image_processing/screen_finder.py

`# Copyright 2014 The Chromium Authors. All rights reserved.
# Use of this source code is governed by a BSD-style license that can be
# found in the LICENSE file.
#
# This script attempts to detect the region of a camera's field of view that
# contains the screen of the device we are testing.
#
# Usage: ./screen_finder.py path_to_video 0 0 --verbose`

Modules
`` |  |

copy cv2 telemetry.internal.image_processing.cv_util | telemetry.internal.util.external_modules telemetry.internal.image_processing.frame_generator logging | numpy os sys | telemetry.internal.image_processing.video_file_frame_generator

Classes
`` |  |

__builtin__.object
  ScreenFinder

class ScreenFinder(__builtin__.object)
`` | `Finds and extracts device screens from video. Sample Usage: sf = ScreenFinder(sys.argv[1]) while sf.HasNext(): ret, screen = sf.GetNext()
Attributes:
_lost_corners: Each index represents whether or not we lost track of that
corner on the previous frame. Ordered by [top-right, top-left,
bottom-left, bottom-right]
_frame: An unmodified copy of the frame we're currently processing.
_frame_debug: A copy of the frame we're currently processing, may be
modified at any time, used for debugging.
_frame_grey: A greyscale copy of the frame we're currently processing.
_frame_edges: A Canny Edge detected copy of the frame we're currently
processing.
_screen_size: The size of device screen in the video when first detected.
_avg_corners: Exponentially weighted average of the previous corner
locations.
_prev_corners: The location of the corners in the previous frame.
_lost_corner_frames: A counter of the number of successive frames in which
we've lost a corner location.
_border: See |border| above.
_min_line_length: The minimum length a line must be before we consider it
a possible screen edge.
_frame_generator: See |frame_generator| above.
_width, _height: The width and height of the frame.
_anglesp5, _anglesm5: The angles for each point we look at in the grid
when computing brightness, constant across frames.
`
| Methods defined here:

GetNext(self)
  `Gets the next screen image.
  Returns:
  A numpy matrix containing the screen surrounded by the number of border
  pixels specified in initialization, and the location of the detected
  screen corners in the current frame, if a screen is found. The returned
  screen is guaranteed to be the same size at each frame.
  'None' and 'None' if no screen was found on the current frame.
  Raises:
  FrameReadError: An error occurred in the FrameGenerator.
  RuntimeError: This method was called when no frames were available.`

HasNext(self)
  `True if there are more frames available to process.`

__init__(self, frame_generator, border=5)
  `Initializes the ScreenFinder object.
  Args:
  frame_generator: FrameGenerator, An initialized Video Frame Generator.
  border: int, number of pixels of border to be kept when cropping the
  detected screen.
  Raises:
  FrameReadError: The frame generator may output a read error during
  initialization.`

Data descriptors defined here:

__dict__
  `dictionary for instance variables (if defined)`

__weakref__
  `list of weak references to the object (if defined)`

Data and other attributes defined here:

CANNY_HYSTERESIS_THRESH_HIGH = 500

CANNY_HYSTERESIS_THRESH_LOW = 300

CORNER_AVERAGE_WEIGHT = 0.5

CornerData = <class 'telemetry.internal.image_processing.screen_finder.CornerData'>

DEBUG = False

MAX_INTERFRAME_MOTION = 25

MIN_CORNER_ABSOLUTE_BRIGHTNESS = 60

MIN_RELATIVE_BRIGHTNESS_FACTOR = 1.5

MIN_SCREEN_WIDTH = 40

RESET_AFTER_N_BAD_FRAMES = 2

SMALL_ANGLE = 0.08726646259971647

ScreenNotFoundError = <class 'telemetry.internal.image_processing.screen_finder.ScreenNotFoundError'>

Functions
`` |  |

main()

Data
`` |  | division = _Feature((2, 2, 0, 'alpha', 2), (3, 0, 0, 'alpha', 0), 8192)