| 123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168 |
- <!DOCTYPE html PUBLIC "-//W3C//DTD HTML 4.0 Transitional//EN">
- <html><head><title>Python: module telemetry.internal.image_processing.screen_finder</title>
- <meta charset="utf-8">
- </head><body bgcolor="#f0f0f8">
- <table width="100%" cellspacing=0 cellpadding=2 border=0 summary="heading">
- <tr bgcolor="#7799ee">
- <td valign=bottom> <br>
- <font color="#ffffff" face="helvetica, arial"> <br><big><big><strong><a href="telemetry.html"><font color="#ffffff">telemetry</font></a>.<a href="telemetry.internal.html"><font color="#ffffff">internal</font></a>.<a href="telemetry.internal.image_processing.html"><font color="#ffffff">image_processing</font></a>.screen_finder</strong></big></big></font></td
- ><td align=right valign=bottom
- ><font color="#ffffff" face="helvetica, arial"><a href=".">index</a><br><a href="../telemetry/internal/image_processing/screen_finder.py">telemetry/internal/image_processing/screen_finder.py</a></font></td></tr></table>
- <p><tt># Copyright 2014 The Chromium Authors. All rights reserved.<br>
- # Use of this source code is governed by a BSD-style license that can be<br>
- # found in the LICENSE file.<br>
- #<br>
- # This script attempts to detect the region of a camera's field of view that<br>
- # contains the screen of the device we are testing.<br>
- #<br>
- # Usage: ./screen_finder.py path_to_video 0 0 --verbose</tt></p>
- <p>
- <table width="100%" cellspacing=0 cellpadding=2 border=0 summary="section">
- <tr bgcolor="#aa55cc">
- <td colspan=3 valign=bottom> <br>
- <font color="#ffffff" face="helvetica, arial"><big><strong>Modules</strong></big></font></td></tr>
-
- <tr><td bgcolor="#aa55cc"><tt> </tt></td><td> </td>
- <td width="100%"><table width="100%" summary="list"><tr><td width="25%" valign=top><a href="copy.html">copy</a><br>
- <a href="cv2.html">cv2</a><br>
- <a href="telemetry.internal.image_processing.cv_util.html">telemetry.internal.image_processing.cv_util</a><br>
- </td><td width="25%" valign=top><a href="telemetry.internal.util.external_modules.html">telemetry.internal.util.external_modules</a><br>
- <a href="telemetry.internal.image_processing.frame_generator.html">telemetry.internal.image_processing.frame_generator</a><br>
- <a href="logging.html">logging</a><br>
- </td><td width="25%" valign=top><a href="numpy.html">numpy</a><br>
- <a href="os.html">os</a><br>
- <a href="sys.html">sys</a><br>
- </td><td width="25%" valign=top><a href="telemetry.internal.image_processing.video_file_frame_generator.html">telemetry.internal.image_processing.video_file_frame_generator</a><br>
- </td></tr></table></td></tr></table><p>
- <table width="100%" cellspacing=0 cellpadding=2 border=0 summary="section">
- <tr bgcolor="#ee77aa">
- <td colspan=3 valign=bottom> <br>
- <font color="#ffffff" face="helvetica, arial"><big><strong>Classes</strong></big></font></td></tr>
-
- <tr><td bgcolor="#ee77aa"><tt> </tt></td><td> </td>
- <td width="100%"><dl>
- <dt><font face="helvetica, arial"><a href="__builtin__.html#object">__builtin__.object</a>
- </font></dt><dd>
- <dl>
- <dt><font face="helvetica, arial"><a href="telemetry.internal.image_processing.screen_finder.html#ScreenFinder">ScreenFinder</a>
- </font></dt></dl>
- </dd>
- </dl>
- <p>
- <table width="100%" cellspacing=0 cellpadding=2 border=0 summary="section">
- <tr bgcolor="#ffc8d8">
- <td colspan=3 valign=bottom> <br>
- <font color="#000000" face="helvetica, arial"><a name="ScreenFinder">class <strong>ScreenFinder</strong></a>(<a href="__builtin__.html#object">__builtin__.object</a>)</font></td></tr>
-
- <tr bgcolor="#ffc8d8"><td rowspan=2><tt> </tt></td>
- <td colspan=2><tt>Finds and extracts device screens from video.<br>
- <br>
- Sample Usage:<br>
- sf = <a href="#ScreenFinder">ScreenFinder</a>(sys.argv[1])<br>
- while sf.<a href="#ScreenFinder-HasNext">HasNext</a>():<br>
- ret, screen = sf.<a href="#ScreenFinder-GetNext">GetNext</a>()<br>
- <br>
- Attributes:<br>
- _lost_corners: Each index represents whether or not we lost track of that<br>
- corner on the previous frame. Ordered by [top-right, top-left,<br>
- bottom-left, bottom-right]<br>
- _frame: An unmodified copy of the frame we're currently processing.<br>
- _frame_debug: A copy of the frame we're currently processing, may be<br>
- modified at any time, used for debugging.<br>
- _frame_grey: A greyscale copy of the frame we're currently processing.<br>
- _frame_edges: A Canny Edge detected copy of the frame we're currently<br>
- processing.<br>
- _screen_size: The size of device screen in the video when first detected.<br>
- _avg_corners: Exponentially weighted average of the previous corner<br>
- locations.<br>
- _prev_corners: The location of the corners in the previous frame.<br>
- _lost_corner_frames: A counter of the number of successive frames in which<br>
- we've lost a corner location.<br>
- _border: See |border| above.<br>
- _min_line_length: The minimum length a line must be before we consider it<br>
- a possible screen edge.<br>
- _frame_generator: See |frame_generator| above.<br>
- _width, _height: The width and height of the frame.<br>
- _anglesp5, _anglesm5: The angles for each point we look at in the grid<br>
- when computing brightness, constant across frames.<br> </tt></td></tr>
- <tr><td> </td>
- <td width="100%">Methods defined here:<br>
- <dl><dt><a name="ScreenFinder-GetNext"><strong>GetNext</strong></a>(self)</dt><dd><tt>Gets the next screen image.<br>
- <br>
- Returns:<br>
- A numpy matrix containing the screen surrounded by the number of border<br>
- pixels specified in initialization, and the location of the detected<br>
- screen corners in the current frame, if a screen is found. The returned<br>
- screen is guaranteed to be the same size at each frame.<br>
- 'None' and 'None' if no screen was found on the current frame.<br>
- <br>
- Raises:<br>
- FrameReadError: An error occurred in the FrameGenerator.<br>
- RuntimeError: This method was called when no frames were available.</tt></dd></dl>
- <dl><dt><a name="ScreenFinder-HasNext"><strong>HasNext</strong></a>(self)</dt><dd><tt>True if there are more frames available to process.</tt></dd></dl>
- <dl><dt><a name="ScreenFinder-__init__"><strong>__init__</strong></a>(self, frame_generator, border<font color="#909090">=5</font>)</dt><dd><tt>Initializes the <a href="#ScreenFinder">ScreenFinder</a> <a href="__builtin__.html#object">object</a>.<br>
- <br>
- Args:<br>
- frame_generator: FrameGenerator, An initialized Video Frame Generator.<br>
- border: int, number of pixels of border to be kept when cropping the<br>
- detected screen.<br>
- <br>
- Raises:<br>
- FrameReadError: The frame generator may output a read error during<br>
- initialization.</tt></dd></dl>
- <hr>
- Data descriptors defined here:<br>
- <dl><dt><strong>__dict__</strong></dt>
- <dd><tt>dictionary for instance variables (if defined)</tt></dd>
- </dl>
- <dl><dt><strong>__weakref__</strong></dt>
- <dd><tt>list of weak references to the object (if defined)</tt></dd>
- </dl>
- <hr>
- Data and other attributes defined here:<br>
- <dl><dt><strong>CANNY_HYSTERESIS_THRESH_HIGH</strong> = 500</dl>
- <dl><dt><strong>CANNY_HYSTERESIS_THRESH_LOW</strong> = 300</dl>
- <dl><dt><strong>CORNER_AVERAGE_WEIGHT</strong> = 0.5</dl>
- <dl><dt><strong>CornerData</strong> = <class 'telemetry.internal.image_processing.screen_finder.CornerData'></dl>
- <dl><dt><strong>DEBUG</strong> = False</dl>
- <dl><dt><strong>MAX_INTERFRAME_MOTION</strong> = 25</dl>
- <dl><dt><strong>MIN_CORNER_ABSOLUTE_BRIGHTNESS</strong> = 60</dl>
- <dl><dt><strong>MIN_RELATIVE_BRIGHTNESS_FACTOR</strong> = 1.5</dl>
- <dl><dt><strong>MIN_SCREEN_WIDTH</strong> = 40</dl>
- <dl><dt><strong>RESET_AFTER_N_BAD_FRAMES</strong> = 2</dl>
- <dl><dt><strong>SMALL_ANGLE</strong> = 0.08726646259971647</dl>
- <dl><dt><strong>ScreenNotFoundError</strong> = <class 'telemetry.internal.image_processing.screen_finder.ScreenNotFoundError'></dl>
- </td></tr></table></td></tr></table><p>
- <table width="100%" cellspacing=0 cellpadding=2 border=0 summary="section">
- <tr bgcolor="#eeaa77">
- <td colspan=3 valign=bottom> <br>
- <font color="#ffffff" face="helvetica, arial"><big><strong>Functions</strong></big></font></td></tr>
-
- <tr><td bgcolor="#eeaa77"><tt> </tt></td><td> </td>
- <td width="100%"><dl><dt><a name="-main"><strong>main</strong></a>()</dt></dl>
- </td></tr></table><p>
- <table width="100%" cellspacing=0 cellpadding=2 border=0 summary="section">
- <tr bgcolor="#55aa55">
- <td colspan=3 valign=bottom> <br>
- <font color="#ffffff" face="helvetica, arial"><big><strong>Data</strong></big></font></td></tr>
-
- <tr><td bgcolor="#55aa55"><tt> </tt></td><td> </td>
- <td width="100%"><strong>division</strong> = _Feature((2, 2, 0, 'alpha', 2), (3, 0, 0, 'alpha', 0), 8192)</td></tr></table>
- </body></html>
|