Added pypi publishing. Added docs. Fixed mypy. Added tox testing.

This commit is contained in:
simleek
2019-11-09 22:00:43 -07:00
parent 1b4818edad
commit 2c870ac603
83 changed files with 19617 additions and 97 deletions
+21 -9
View File
@@ -3,7 +3,7 @@ name: Python package
on: [push]
jobs:
build:
build-and-publish:
runs-on: windows-latest
strategy:
@@ -13,11 +13,23 @@ jobs:
python-version: [3.6, 3.7]
steps:
- uses: actions/checkout@v1
- name: Set up Python ${{ matrix.python-version }}
uses: actions/setup-python@v1
with:
python-version: ${{ matrix.python-version }}
- uses: dschep/install-poetry-action@v1.2
- run: poetry install
- run: poetry run pytest tests
- uses: actions/checkout@v1
- name: Set up Python ${{ matrix.python-version }}
uses: actions/setup-python@v1
with:
python-version: ${{ matrix.python-version }}
- uses: dschep/install-poetry-action@v1.2
- name: Install dependencies
- run: poetry install
- name: Test with tox
- run: tox -p auto -o
- name: Publish distribution 📦 to Test PyPI
uses: pypa/gh-action-pypi-publish@master
with:
password: ${{ secrets.test_pypi_password }}
repository_url: https://test.pypi.org/legacy/
- name: Publish distribution 📦 to PyPI
if: startsWith(github.event.ref, 'refs/tags')
uses: pypa/gh-action-pypi-publish@master
with:
password: ${{ secrets.pypi_password }}
+1 -1
View File
@@ -66,7 +66,7 @@ instance/
.scrapy
# Sphinx documentation
docs/_build/
docs/docsrc/_build/
# PyBuilder
target/
+45 -21
View File
@@ -1,10 +1,15 @@
# displayarray
displayarray
============
A library for displaying arrays as video in Python.
## Display arrays while updating them
Display arrays while updating them
----------------------------------
![](https://i.imgur.com/UEt6iR6.gif)
.. figure:: https://i.imgur.com/UEt6iR6.gif
:alt:
::
from displayarray import display
import numpy as np
@@ -16,12 +21,15 @@ A library for displaying arrays as video in Python.
arr[:] += np.random.normal(0.001, 0.0005, (100, 100, 3))
arr %= 1.0
## Run functions on 60fps webcam or video input
Run functions on 60fps webcam or video input
--------------------------------------------
[![](https://thumbs.gfycat.com/AbsoluteEarnestEelelephant-size_restricted.gif)](https://gfycat.com/absoluteearnesteelelephant)
|image0|
(Video Source: https://www.youtube.com/watch?v=WgXQ59rg0GM)
::
from displayarray import display
import math as m
@@ -34,15 +42,19 @@ A library for displaying arrays as video in Python.
forest_color.i = 0
display("fractal test.mp4", callbacks=forest_color, blocking=True, fps_limit=120)
## Display tensors as they're running through TensorFlow or PyTorch
![](https://i.imgur.com/TejCpIP.png)
Display tensors as they're running through TensorFlow or PyTorch
----------------------------------------------------------------
.. figure:: https://i.imgur.com/TejCpIP.png
:alt:
::
# see test_display_tensorflow in test_simple_apy for full code.
...
autoencoder.compile(loss="mse", optimizer="adam")
while displayer:
@@ -60,10 +72,13 @@ A library for displaying arrays as video in Python.
output_image = autoencoder.predict(grab, steps=1)
displayer.update((output_image[0] * 255.0).astype(np.uint8), "uid for autoencoder output")
## Handle input events
Handle input events
-------------------
Mouse events captured whenever the mouse moves over the window:
::
event:0
x,y:133,387
flags:0
@@ -71,33 +86,42 @@ Mouse events captured whenever the mouse moves over the window:
Code:
::
from displayarray.input import mouse_loop
from displayarray import display
@mouse_loop
def print_mouse_thread(mouse_event):
print(mouse_event)
display("fractal test.mp4", blocking=True)
## Installation
Installation
------------
displayarray is distributed on [PyPI](https://pypi.org) as a universal
wheel in Python 3.6+ and PyPy.
displayarray is distributed on `PyPI <https://pypi.org>`__ as a
universal wheel in Python 3.6+ and PyPy.
::
$ pip install displayarray
## Usage
Usage
-----
See tests for more example code. API will be generated soon.
## License
License
-------
displayarray is distributed under the terms of both
- [MIT License](https://choosealicense.com/licenses/mit)
- [Apache License, Version 2.0](https://choosealicense.com/licenses/apache-2.0)
- `MIT License <https://choosealicense.com/licenses/mit>`__
- `Apache License, Version
2.0 <https://choosealicense.com/licenses/apache-2.0>`__
at your option.
.. |image0| image:: https://thumbs.gfycat.com/AbsoluteEarnestEelelephant-size_restricted.gif
:target: https://gfycat.com/absoluteearnesteelelephant
+2 -2
View File
@@ -48,12 +48,12 @@ def main(argv=None):
while d:
if arguments["--message-backend"] == "ROS":
async for v_name, frame in read_updates_ros(
[t for t, d in topics_split], [d for t, d in topics_split]
[t for t, d in topics_split], [d for t, d in topics_split]
):
d.update(arr=frame, id=v_name)
if arguments["--message-backend"] == "ZeroMQ":
async for v_name, frame in read_updates_zero_mq(
*[bytes(t, encoding="ascii") for t in topics]
*[bytes(t, encoding="ascii") for t in topics]
):
d.update(arr=frame, id=v_name)
+1 -1
View File
@@ -187,7 +187,7 @@ async def publish_updates_ros(
) # allow users to use their own custom messages in numpy arrays
return msg_type
publishers = {}
publishers: Dict[str, rospy.Publisher] = {}
rospy.init_node(node_name, anonymous=True)
try:
for v in read_updates(vids, callbacks, fps_limit, size, end_callback, blocking):
+14 -9
View File
@@ -115,7 +115,11 @@ class FrameUpdater(threading.Thread):
async def read_updates(
*vids,
callbacks: Optional[
Union[Dict[Any, FrameCallable], List[FrameCallable], FrameCallable]
Union[
Dict[Any, Union[FrameCallable, List[FrameCallable]]],
List[FrameCallable],
FrameCallable,
]
] = None,
fps_limit=float("inf"),
size=(-1, -1),
@@ -168,12 +172,12 @@ async def read_updates(
async def read_updates_zero_mq(
*topic_names,
address="tcp://127.0.0.1:5600",
flags=0,
copy=True,
track=False,
blocking=False,
end_callback: Callable[[Any], bool] = lambda: False,
address: str = "tcp://127.0.0.1:5600",
flags: int = 0,
copy: bool = True,
track: bool = False,
blocking: bool = False,
end_callback: Callable[[Any], bool] = lambda x: False,
):
import zmq
@@ -210,7 +214,7 @@ async def read_updates_ros(
dtypes=None,
listener_node_name=None,
poll_rate_hz=None,
end_callback: Callable[[Any], bool] = lambda: False,
end_callback: Callable[[Any], bool] = lambda x: False,
):
import rospy
from rospy.numpy_msg import numpy_msg
@@ -289,6 +293,7 @@ async def read_updates_ros(
pass
finally:
if s is not None:
s.unregister()
for _, sub in s.items():
sub.unregister()
if rospy.core.is_shutdown():
raise rospy.exceptions.ROSInterruptException("rospy shutdown")
+18 -7
View File
@@ -226,7 +226,10 @@ class SubscriberWindows(object):
def _get_video_callback_dict_threads(
*vids, callbacks: Optional[Dict[Any, FrameCallable]] = None, fps=240, size=(-1, -1)
*vids,
callbacks: Optional[Dict[Any, Union[FrameCallable, List[FrameCallable]]]] = None,
fps=240,
size=(-1, -1),
):
assert callbacks is not None
vid_threads = []
@@ -235,14 +238,14 @@ def _get_video_callback_dict_threads(
v_callbacks: List[Callable[[np.ndarray], Any]] = []
if v_name in callbacks:
if isinstance(callbacks[v_name], List):
v_callbacks.extend(callbacks[v_name])
v_callbacks.extend(callbacks[v_name]) # type: ignore
elif callable(callbacks[v_name]):
v_callbacks.append(callbacks[v_name])
v_callbacks.append(callbacks[v_name]) # type: ignore
if v in callbacks:
if isinstance(callbacks[v], List):
v_callbacks.extend(callbacks[v])
v_callbacks.extend(callbacks[v]) # type: ignore
elif callable(callbacks[v]):
v_callbacks.append(callbacks[v])
v_callbacks.append(callbacks[v]) # type: ignore
vid_threads.append(
FrameUpdater(v, callbacks=v_callbacks, fps_limit=fps, request_size=size)
)
@@ -252,7 +255,11 @@ def _get_video_callback_dict_threads(
def _get_video_threads(
*vids,
callbacks: Optional[
Union[Dict[Any, FrameCallable], List[FrameCallable], FrameCallable]
Union[
Dict[Any, Union[FrameCallable, List[FrameCallable]]],
List[FrameCallable],
FrameCallable,
]
] = None,
fps=240,
size=(-1, -1),
@@ -282,7 +289,11 @@ def _get_video_threads(
def display(
*vids,
callbacks: Optional[
Union[Dict[Any, FrameCallable], List[FrameCallable], FrameCallable]
Union[
Dict[Any, Union[FrameCallable, List[FrameCallable]]],
List[FrameCallable],
FrameCallable,
]
] = None,
window_names=None,
blocking=False,
+4
View File
@@ -0,0 +1,4 @@
# Sphinx build info version 1
# This file hashes the configuration used when building these files. When it is not found, a full rebuild will be done.
config: a167618eb830b61944ba34b40c4f87db
tags: d77d1c0d9ca2f4c8421862c7c5a0d620
Binary file not shown.
Binary file not shown.
Binary file not shown.
Binary file not shown.
Binary file not shown.
Binary file not shown.
Binary file not shown.
Binary file not shown.
Binary file not shown.
Binary file not shown.
@@ -0,0 +1,214 @@
<!DOCTYPE html>
<html xmlns="http://www.w3.org/1999/xhtml">
<head>
<meta charset="utf-8" />
<title>displayarray.effects.crop &#8212; DisplayArray documentation</title>
<link rel="stylesheet" href="../../../../_static/alabaster.css" type="text/css" />
<link rel="stylesheet" href="../../../../_static/pygments.css" type="text/css" />
<script type="text/javascript" id="documentation_options" data-url_root="../../../../" src="../../../../_static/documentation_options.js"></script>
<script type="text/javascript" src="../../../../_static/jquery.js"></script>
<script type="text/javascript" src="../../../../_static/underscore.js"></script>
<script type="text/javascript" src="../../../../_static/doctools.js"></script>
<script type="text/javascript" src="../../../../_static/language_data.js"></script>
<link rel="index" title="Index" href="../../../../genindex/" />
<link rel="search" title="Search" href="../../../../search/" />
<link rel="stylesheet" href="../../../../_static/custom.css" type="text/css" />
<meta name="viewport" content="width=device-width, initial-scale=0.9, maximum-scale=0.9" />
</head><body>
<div class="document">
<div class="documentwrapper">
<div class="bodywrapper">
<div class="body" role="main">
<h1>Source code for displayarray.effects.crop</h1><div class="highlight"><pre>
<span></span><span class="kn">import</span> <span class="nn">numpy</span> <span class="k">as</span> <span class="nn">np</span>
<span class="kn">from</span> <span class="nn">..input</span> <span class="k">import</span> <span class="n">mouse_loop</span>
<div class="viewcode-block" id="Crop"><a class="viewcode-back" href="../../../../crop/#displayarray.effects.crop.Crop">[docs]</a><span class="k">class</span> <span class="nc">Crop</span><span class="p">(</span><span class="nb">object</span><span class="p">):</span>
<span class="sd">&quot;&quot;&quot;A callback class that will return the input array cropped to the output size. N-dimensional.&quot;&quot;&quot;</span>
<span class="k">def</span> <span class="nf">__init__</span><span class="p">(</span><span class="bp">self</span><span class="p">,</span> <span class="n">output_size</span><span class="o">=</span><span class="p">(</span><span class="mi">64</span><span class="p">,</span> <span class="mi">64</span><span class="p">,</span> <span class="mi">3</span><span class="p">),</span> <span class="n">center</span><span class="o">=</span><span class="kc">None</span><span class="p">):</span>
<span class="bp">self</span><span class="o">.</span><span class="n">_output_size</span> <span class="o">=</span> <span class="kc">None</span>
<span class="bp">self</span><span class="o">.</span><span class="n">_center</span> <span class="o">=</span> <span class="kc">None</span>
<span class="bp">self</span><span class="o">.</span><span class="n">odd_center</span> <span class="o">=</span> <span class="kc">None</span>
<span class="bp">self</span><span class="o">.</span><span class="n">mouse_control</span> <span class="o">=</span> <span class="kc">None</span>
<span class="bp">self</span><span class="o">.</span><span class="n">input_size</span> <span class="o">=</span> <span class="kc">None</span>
<span class="bp">self</span><span class="o">.</span><span class="n">center</span> <span class="o">=</span> <span class="n">center</span>
<span class="bp">self</span><span class="o">.</span><span class="n">output_size</span> <span class="o">=</span> <span class="n">output_size</span>
<span class="nd">@property</span>
<span class="k">def</span> <span class="nf">output_size</span><span class="p">(</span><span class="bp">self</span><span class="p">):</span>
<span class="k">return</span> <span class="bp">self</span><span class="o">.</span><span class="n">_output_size</span>
<span class="nd">@output_size</span><span class="o">.</span><span class="n">setter</span>
<span class="k">def</span> <span class="nf">output_size</span><span class="p">(</span><span class="bp">self</span><span class="p">,</span> <span class="nb">set</span><span class="p">):</span>
<span class="bp">self</span><span class="o">.</span><span class="n">_output_size</span> <span class="o">=</span> <span class="nb">set</span>
<span class="k">if</span> <span class="bp">self</span><span class="o">.</span><span class="n">_output_size</span> <span class="ow">is</span> <span class="ow">not</span> <span class="kc">None</span><span class="p">:</span>
<span class="bp">self</span><span class="o">.</span><span class="n">_output_size</span> <span class="o">=</span> <span class="n">np</span><span class="o">.</span><span class="n">asarray</span><span class="p">(</span><span class="nb">set</span><span class="p">)</span>
<span class="nd">@property</span>
<span class="k">def</span> <span class="nf">center</span><span class="p">(</span><span class="bp">self</span><span class="p">):</span>
<span class="k">return</span> <span class="bp">self</span><span class="o">.</span><span class="n">_center</span>
<span class="nd">@center</span><span class="o">.</span><span class="n">setter</span>
<span class="k">def</span> <span class="nf">center</span><span class="p">(</span><span class="bp">self</span><span class="p">,</span> <span class="nb">set</span><span class="p">):</span>
<span class="bp">self</span><span class="o">.</span><span class="n">_center</span> <span class="o">=</span> <span class="nb">set</span>
<span class="k">if</span> <span class="bp">self</span><span class="o">.</span><span class="n">_center</span> <span class="ow">is</span> <span class="ow">not</span> <span class="kc">None</span><span class="p">:</span>
<span class="bp">self</span><span class="o">.</span><span class="n">_center</span> <span class="o">=</span> <span class="n">np</span><span class="o">.</span><span class="n">asarray</span><span class="p">(</span><span class="nb">set</span><span class="p">)</span>
<span class="k">def</span> <span class="nf">__call__</span><span class="p">(</span><span class="bp">self</span><span class="p">,</span> <span class="n">arr</span><span class="p">):</span>
<span class="sd">&quot;&quot;&quot;Crop the input array to the specified output size. output is centered on self.center point on input.&quot;&quot;&quot;</span>
<span class="bp">self</span><span class="o">.</span><span class="n">input_size</span> <span class="o">=</span> <span class="n">arr</span><span class="o">.</span><span class="n">shape</span>
<span class="k">if</span> <span class="bp">self</span><span class="o">.</span><span class="n">center</span> <span class="ow">is</span> <span class="kc">None</span><span class="p">:</span>
<span class="bp">self</span><span class="o">.</span><span class="n">center</span> <span class="o">=</span> <span class="p">[</span><span class="nb">int</span><span class="p">(</span><span class="n">arr</span><span class="o">.</span><span class="n">shape</span><span class="p">[</span><span class="n">x</span><span class="p">])</span> <span class="o">//</span> <span class="mi">2</span> <span class="k">for</span> <span class="n">x</span> <span class="ow">in</span> <span class="nb">range</span><span class="p">(</span><span class="n">arr</span><span class="o">.</span><span class="n">ndim</span><span class="p">)]</span>
<span class="bp">self</span><span class="o">.</span><span class="n">odd_out</span> <span class="o">=</span> <span class="n">np</span><span class="o">.</span><span class="n">array</span><span class="p">(</span>
<span class="p">[</span><span class="bp">self</span><span class="o">.</span><span class="n">output_size</span><span class="p">[</span><span class="n">x</span><span class="p">]</span> <span class="o">%</span> <span class="mi">2</span> <span class="k">for</span> <span class="n">x</span> <span class="ow">in</span> <span class="nb">range</span><span class="p">(</span><span class="nb">len</span><span class="p">(</span><span class="bp">self</span><span class="o">.</span><span class="n">output_size</span><span class="p">))]</span>
<span class="p">)</span>
<span class="bp">self</span><span class="o">.</span><span class="n">odd_center</span> <span class="o">=</span> <span class="n">np</span><span class="o">.</span><span class="n">array</span><span class="p">(</span>
<span class="p">[</span><span class="bp">self</span><span class="o">.</span><span class="n">center</span><span class="p">[</span><span class="n">x</span><span class="p">]</span> <span class="o">%</span> <span class="mi">2</span> <span class="k">for</span> <span class="n">x</span> <span class="ow">in</span> <span class="nb">range</span><span class="p">(</span><span class="nb">len</span><span class="p">(</span><span class="bp">self</span><span class="o">.</span><span class="n">center</span><span class="p">))]</span>
<span class="p">)</span>
<span class="n">center</span> <span class="o">=</span> <span class="bp">self</span><span class="o">.</span><span class="n">center</span><span class="o">.</span><span class="n">copy</span><span class="p">()</span> <span class="c1"># stop opencv from thread breaking us</span>
<span class="n">top_left_get</span> <span class="o">=</span> <span class="p">[</span>
<span class="nb">min</span><span class="p">(</span><span class="nb">max</span><span class="p">(</span><span class="mi">0</span><span class="p">,</span> <span class="n">center</span><span class="p">[</span><span class="n">x</span><span class="p">]</span> <span class="o">-</span> <span class="bp">self</span><span class="o">.</span><span class="n">output_size</span><span class="p">[</span><span class="n">x</span><span class="p">]</span> <span class="o">//</span> <span class="mi">2</span><span class="p">),</span> <span class="n">arr</span><span class="o">.</span><span class="n">shape</span><span class="p">[</span><span class="n">x</span><span class="p">]</span> <span class="o">-</span> <span class="mi">1</span><span class="p">)</span>
<span class="k">for</span> <span class="n">x</span> <span class="ow">in</span> <span class="nb">range</span><span class="p">(</span><span class="n">arr</span><span class="o">.</span><span class="n">ndim</span><span class="p">)</span>
<span class="p">]</span>
<span class="n">bottom_right_get</span> <span class="o">=</span> <span class="p">[</span>
<span class="nb">min</span><span class="p">(</span>
<span class="nb">max</span><span class="p">(</span><span class="mi">0</span><span class="p">,</span> <span class="n">center</span><span class="p">[</span><span class="n">x</span><span class="p">]</span> <span class="o">+</span> <span class="bp">self</span><span class="o">.</span><span class="n">output_size</span><span class="p">[</span><span class="n">x</span><span class="p">]</span> <span class="o">//</span> <span class="mi">2</span> <span class="o">+</span> <span class="bp">self</span><span class="o">.</span><span class="n">odd_out</span><span class="p">[</span><span class="n">x</span><span class="p">]),</span>
<span class="n">arr</span><span class="o">.</span><span class="n">shape</span><span class="p">[</span><span class="n">x</span><span class="p">],</span>
<span class="p">)</span>
<span class="k">for</span> <span class="n">x</span> <span class="ow">in</span> <span class="nb">range</span><span class="p">(</span><span class="n">arr</span><span class="o">.</span><span class="n">ndim</span><span class="p">)</span>
<span class="p">]</span>
<span class="n">top_left_put</span> <span class="o">=</span> <span class="p">[</span>
<span class="nb">min</span><span class="p">(</span>
<span class="nb">max</span><span class="p">(</span>
<span class="mi">0</span><span class="p">,</span>
<span class="o">-</span><span class="p">(</span><span class="n">bottom_right_get</span><span class="p">[</span><span class="n">x</span><span class="p">]</span> <span class="o">-</span> <span class="n">center</span><span class="p">[</span><span class="n">x</span><span class="p">]</span> <span class="o">-</span> <span class="bp">self</span><span class="o">.</span><span class="n">output_size</span><span class="p">[</span><span class="n">x</span><span class="p">]</span> <span class="o">//</span> <span class="mi">2</span><span class="p">)</span>
<span class="o">+</span> <span class="bp">self</span><span class="o">.</span><span class="n">odd_out</span><span class="p">[</span><span class="n">x</span><span class="p">],</span>
<span class="p">),</span>
<span class="bp">self</span><span class="o">.</span><span class="n">output_size</span><span class="p">[</span><span class="n">x</span><span class="p">],</span>
<span class="p">)</span>
<span class="k">for</span> <span class="n">x</span> <span class="ow">in</span> <span class="nb">range</span><span class="p">(</span><span class="n">arr</span><span class="o">.</span><span class="n">ndim</span><span class="p">)</span>
<span class="p">]</span>
<span class="n">bottom_right_put</span> <span class="o">=</span> <span class="p">[</span>
<span class="nb">min</span><span class="p">(</span>
<span class="nb">max</span><span class="p">(</span><span class="mi">0</span><span class="p">,</span> <span class="n">top_left_put</span><span class="p">[</span><span class="n">x</span><span class="p">]</span> <span class="o">+</span> <span class="p">(</span><span class="n">bottom_right_get</span><span class="p">[</span><span class="n">x</span><span class="p">]</span> <span class="o">-</span> <span class="n">top_left_get</span><span class="p">[</span><span class="n">x</span><span class="p">])),</span>
<span class="bp">self</span><span class="o">.</span><span class="n">output_size</span><span class="p">[</span><span class="n">x</span><span class="p">],</span>
<span class="p">)</span>
<span class="k">for</span> <span class="n">x</span> <span class="ow">in</span> <span class="nb">range</span><span class="p">(</span><span class="n">arr</span><span class="o">.</span><span class="n">ndim</span><span class="p">)</span>
<span class="p">]</span>
<span class="n">get_slices</span> <span class="o">=</span> <span class="p">[</span><span class="nb">slice</span><span class="p">(</span><span class="n">x1</span><span class="p">,</span> <span class="n">x2</span><span class="p">)</span> <span class="k">for</span> <span class="n">x1</span><span class="p">,</span> <span class="n">x2</span> <span class="ow">in</span> <span class="nb">zip</span><span class="p">(</span><span class="n">top_left_get</span><span class="p">,</span> <span class="n">bottom_right_get</span><span class="p">)]</span>
<span class="n">get_slices</span> <span class="o">=</span> <span class="nb">tuple</span><span class="p">(</span><span class="n">get_slices</span><span class="p">)</span>
<span class="n">put_slices</span> <span class="o">=</span> <span class="p">[</span><span class="nb">slice</span><span class="p">(</span><span class="n">x1</span><span class="p">,</span> <span class="n">x2</span><span class="p">)</span> <span class="k">for</span> <span class="n">x1</span><span class="p">,</span> <span class="n">x2</span> <span class="ow">in</span> <span class="nb">zip</span><span class="p">(</span><span class="n">top_left_put</span><span class="p">,</span> <span class="n">bottom_right_put</span><span class="p">)]</span>
<span class="n">put_slices</span> <span class="o">=</span> <span class="nb">tuple</span><span class="p">(</span><span class="n">put_slices</span><span class="p">)</span>
<span class="n">out_array</span> <span class="o">=</span> <span class="n">np</span><span class="o">.</span><span class="n">zeros</span><span class="p">(</span><span class="bp">self</span><span class="o">.</span><span class="n">output_size</span><span class="p">)</span>
<span class="n">out_array</span><span class="p">[</span><span class="n">put_slices</span><span class="p">]</span> <span class="o">=</span> <span class="n">arr</span><span class="p">[</span><span class="n">get_slices</span><span class="p">]</span>
<span class="k">return</span> <span class="n">out_array</span><span class="o">.</span><span class="n">astype</span><span class="p">(</span><span class="n">arr</span><span class="o">.</span><span class="n">dtype</span><span class="p">)</span>
<div class="viewcode-block" id="Crop.enable_mouse_control"><a class="viewcode-back" href="../../../../crop/#displayarray.effects.crop.Crop.enable_mouse_control">[docs]</a> <span class="k">def</span> <span class="nf">enable_mouse_control</span><span class="p">(</span><span class="bp">self</span><span class="p">):</span>
<span class="sd">&quot;&quot;&quot;Move the mouse to move where the crop is from on the original image&quot;&quot;&quot;</span>
<span class="nd">@mouse_loop</span>
<span class="k">def</span> <span class="nf">m_loop</span><span class="p">(</span><span class="n">me</span><span class="p">):</span>
<span class="k">if</span> <span class="bp">self</span><span class="o">.</span><span class="n">center</span> <span class="ow">is</span> <span class="kc">None</span><span class="p">:</span>
<span class="bp">self</span><span class="o">.</span><span class="n">center</span> <span class="o">=</span> <span class="p">[</span><span class="mi">0</span><span class="p">,</span> <span class="mi">0</span><span class="p">,</span> <span class="mi">1</span><span class="p">]</span>
<span class="bp">self</span><span class="o">.</span><span class="n">center</span><span class="p">[:]</span> <span class="o">=</span> <span class="p">[</span>
<span class="nb">int</span><span class="p">(</span><span class="n">me</span><span class="o">.</span><span class="n">y</span> <span class="o">/</span> <span class="bp">self</span><span class="o">.</span><span class="n">output_size</span><span class="p">[</span><span class="mi">0</span><span class="p">]</span> <span class="o">*</span> <span class="bp">self</span><span class="o">.</span><span class="n">input_size</span><span class="p">[</span><span class="mi">0</span><span class="p">]),</span>
<span class="nb">int</span><span class="p">(</span><span class="n">me</span><span class="o">.</span><span class="n">x</span> <span class="o">/</span> <span class="bp">self</span><span class="o">.</span><span class="n">output_size</span><span class="p">[</span><span class="mi">1</span><span class="p">]</span> <span class="o">*</span> <span class="bp">self</span><span class="o">.</span><span class="n">input_size</span><span class="p">[</span><span class="mi">1</span><span class="p">]),</span>
<span class="mi">1</span><span class="p">,</span>
<span class="p">]</span>
<span class="bp">self</span><span class="o">.</span><span class="n">mouse_control</span> <span class="o">=</span> <span class="n">m_loop</span>
<span class="k">return</span> <span class="bp">self</span></div></div>
</pre></div>
</div>
</div>
</div>
<div class="sphinxsidebar" role="navigation" aria-label="main navigation">
<div class="sphinxsidebarwrapper">
<h1 class="logo"><a href="../../../../">DisplayArray</a></h1>
<h3>Navigation</h3>
<p class="caption"><span class="caption-text">Python API</span></p>
<ul>
<li class="toctree-l1"><a class="reference internal" href="../../../../displayarray/">displayarray</a></li>
<li class="toctree-l1"><a class="reference internal" href="../../../../crop/">displayarray.effects.crop</a></li>
<li class="toctree-l1"><a class="reference internal" href="../../../../lens/">displayarray.effects.lens</a></li>
<li class="toctree-l1"><a class="reference internal" href="../../../../select_channels/">displayarray.effects.select_channels</a></li>
<li class="toctree-l1"><a class="reference internal" href="../../../../frame/">displayarray.frame</a></li>
<li class="toctree-l1"><a class="reference internal" href="../../../../window/">displayarray.window</a></li>
<li class="toctree-l1"><a class="reference internal" href="../../../../input/">displayarray.input</a></li>
</ul>
<p class="caption"><span class="caption-text">Bash API</span></p>
<ul>
<li class="toctree-l1"><a class="reference internal" href="../../../../displayarray_bash/">displayarray</a></li>
</ul>
<div class="relations">
<h3>Related Topics</h3>
<ul>
<li><a href="../../../../">Documentation overview</a><ul>
<li><a href="../../../">Module code</a><ul>
</ul></li>
</ul></li>
</ul>
</div>
<div id="searchbox" style="display: none" role="search">
<h3 id="searchlabel">Quick search</h3>
<div class="searchformwrapper">
<form class="search" action="../../../../search/" method="get">
<input type="text" name="q" aria-labelledby="searchlabel" />
<input type="submit" value="Go" />
</form>
</div>
</div>
<script type="text/javascript">$('#searchbox').show(0);</script>
</div>
</div>
<div class="clearer"></div>
</div>
<div class="footer">
&copy;2019, Simulator Leek.
|
Powered by <a href="http://sphinx-doc.org/">Sphinx 2.2.1</a>
&amp; <a href="https://github.com/bitprophet/alabaster">Alabaster 0.7.12</a>
</div>
</body>
</html>
@@ -0,0 +1,294 @@
<!DOCTYPE html>
<html xmlns="http://www.w3.org/1999/xhtml">
<head>
<meta charset="utf-8" />
<title>displayarray.effects.lens &#8212; DisplayArray documentation</title>
<link rel="stylesheet" href="../../../../_static/alabaster.css" type="text/css" />
<link rel="stylesheet" href="../../../../_static/pygments.css" type="text/css" />
<script type="text/javascript" id="documentation_options" data-url_root="../../../../" src="../../../../_static/documentation_options.js"></script>
<script type="text/javascript" src="../../../../_static/jquery.js"></script>
<script type="text/javascript" src="../../../../_static/underscore.js"></script>
<script type="text/javascript" src="../../../../_static/doctools.js"></script>
<script type="text/javascript" src="../../../../_static/language_data.js"></script>
<link rel="index" title="Index" href="../../../../genindex/" />
<link rel="search" title="Search" href="../../../../search/" />
<link rel="stylesheet" href="../../../../_static/custom.css" type="text/css" />
<meta name="viewport" content="width=device-width, initial-scale=0.9, maximum-scale=0.9" />
</head><body>
<div class="document">
<div class="documentwrapper">
<div class="bodywrapper">
<div class="body" role="main">
<h1>Source code for displayarray.effects.lens</h1><div class="highlight"><pre>
<span></span><span class="kn">import</span> <span class="nn">numpy</span> <span class="k">as</span> <span class="nn">np</span>
<span class="kn">from</span> <span class="nn">..input</span> <span class="k">import</span> <span class="n">mouse_loop</span>
<span class="kn">import</span> <span class="nn">cv2</span>
<div class="viewcode-block" id="ControllableLens"><a class="viewcode-back" href="../../../../lens/#displayarray.effects.lens.ControllableLens">[docs]</a><span class="k">class</span> <span class="nc">ControllableLens</span><span class="p">(</span><span class="nb">object</span><span class="p">):</span>
<span class="k">def</span> <span class="nf">__init__</span><span class="p">(</span><span class="bp">self</span><span class="p">,</span> <span class="n">use_bleed</span><span class="o">=</span><span class="kc">False</span><span class="p">,</span> <span class="n">zoom</span><span class="o">=</span><span class="mi">1</span><span class="p">,</span> <span class="n">center</span><span class="o">=</span><span class="kc">None</span><span class="p">):</span>
<span class="bp">self</span><span class="o">.</span><span class="n">center</span> <span class="o">=</span> <span class="n">center</span>
<span class="bp">self</span><span class="o">.</span><span class="n">zoom</span> <span class="o">=</span> <span class="n">zoom</span>
<span class="bp">self</span><span class="o">.</span><span class="n">use_bleed</span> <span class="o">=</span> <span class="n">use_bleed</span>
<span class="bp">self</span><span class="o">.</span><span class="n">bleed</span> <span class="o">=</span> <span class="kc">None</span>
<span class="bp">self</span><span class="o">.</span><span class="n">mouse_control</span> <span class="o">=</span> <span class="kc">None</span>
<span class="k">def</span> <span class="nf">check_setup_bleed</span><span class="p">(</span><span class="bp">self</span><span class="p">,</span> <span class="n">arr</span><span class="p">):</span>
<span class="k">if</span> <span class="ow">not</span> <span class="nb">isinstance</span><span class="p">(</span><span class="bp">self</span><span class="o">.</span><span class="n">bleed</span><span class="p">,</span> <span class="n">np</span><span class="o">.</span><span class="n">ndarray</span><span class="p">)</span> <span class="ow">and</span> <span class="bp">self</span><span class="o">.</span><span class="n">use_bleed</span><span class="p">:</span>
<span class="bp">self</span><span class="o">.</span><span class="n">bleed</span> <span class="o">=</span> <span class="n">np</span><span class="o">.</span><span class="n">zeros_like</span><span class="p">(</span><span class="n">arr</span><span class="p">)</span>
<span class="k">def</span> <span class="nf">run_bleed</span><span class="p">(</span><span class="bp">self</span><span class="p">,</span> <span class="n">arr</span><span class="p">,</span> <span class="n">x</span><span class="p">,</span> <span class="n">y</span><span class="p">):</span>
<span class="n">arr</span><span class="p">[</span><span class="n">y</span><span class="p">,</span> <span class="o">...</span><span class="p">]</span> <span class="o">=</span> <span class="p">(</span><span class="n">arr</span><span class="p">[(</span><span class="n">y</span> <span class="o">+</span> <span class="mi">1</span><span class="p">)</span> <span class="o">%</span> <span class="nb">len</span><span class="p">(</span><span class="n">y</span><span class="p">),</span> <span class="o">...</span><span class="p">]</span> <span class="o">+</span> <span class="n">arr</span><span class="p">[(</span><span class="n">y</span> <span class="o">-</span> <span class="mi">1</span><span class="p">)</span> <span class="o">%</span> <span class="nb">len</span><span class="p">(</span><span class="n">y</span><span class="p">),</span> <span class="o">...</span><span class="p">])</span> <span class="o">/</span> <span class="mi">2</span>
<span class="n">arr</span><span class="p">[:,</span> <span class="n">x</span><span class="p">,</span> <span class="o">...</span><span class="p">]</span> <span class="o">=</span> <span class="p">(</span>
<span class="n">arr</span><span class="p">[:,</span> <span class="p">(</span><span class="n">x</span> <span class="o">+</span> <span class="mi">1</span><span class="p">)</span> <span class="o">%</span> <span class="nb">len</span><span class="p">(</span><span class="n">x</span><span class="p">),</span> <span class="o">...</span><span class="p">]</span> <span class="o">+</span> <span class="n">arr</span><span class="p">[:,</span> <span class="p">(</span><span class="n">x</span> <span class="o">-</span> <span class="mi">1</span><span class="p">)</span> <span class="o">%</span> <span class="nb">len</span><span class="p">(</span><span class="n">x</span><span class="p">),</span> <span class="o">...</span><span class="p">]</span>
<span class="p">)</span> <span class="o">/</span> <span class="mi">2</span></div>
<div class="viewcode-block" id="Barrel"><a class="viewcode-back" href="../../../../lens/#displayarray.effects.lens.Barrel">[docs]</a><span class="k">class</span> <span class="nc">Barrel</span><span class="p">(</span><span class="n">ControllableLens</span><span class="p">):</span>
<span class="k">def</span> <span class="nf">__init__</span><span class="p">(</span>
<span class="bp">self</span><span class="p">,</span> <span class="n">use_bleed</span><span class="o">=</span><span class="kc">False</span><span class="p">,</span> <span class="n">barrel_power</span><span class="o">=</span><span class="mi">1</span><span class="p">,</span> <span class="n">pincushion_power</span><span class="o">=</span><span class="mi">1</span><span class="p">,</span> <span class="n">zoom</span><span class="o">=</span><span class="mi">1</span><span class="p">,</span> <span class="n">center</span><span class="o">=</span><span class="kc">None</span>
<span class="p">):</span>
<span class="nb">super</span><span class="p">()</span><span class="o">.</span><span class="fm">__init__</span><span class="p">(</span><span class="n">use_bleed</span><span class="p">,</span> <span class="n">zoom</span><span class="p">,</span> <span class="n">center</span><span class="p">)</span>
<span class="bp">self</span><span class="o">.</span><span class="n">center</span> <span class="o">=</span> <span class="n">center</span>
<span class="bp">self</span><span class="o">.</span><span class="n">zoom</span> <span class="o">=</span> <span class="n">zoom</span>
<span class="bp">self</span><span class="o">.</span><span class="n">use_bleed</span> <span class="o">=</span> <span class="n">use_bleed</span>
<span class="bp">self</span><span class="o">.</span><span class="n">bleed</span> <span class="o">=</span> <span class="kc">None</span>
<span class="bp">self</span><span class="o">.</span><span class="n">barrel_power</span> <span class="o">=</span> <span class="n">barrel_power</span>
<span class="bp">self</span><span class="o">.</span><span class="n">mouse_control</span> <span class="o">=</span> <span class="kc">None</span>
<div class="viewcode-block" id="Barrel.enable_mouse_control"><a class="viewcode-back" href="../../../../lens/#displayarray.effects.lens.Barrel.enable_mouse_control">[docs]</a> <span class="k">def</span> <span class="nf">enable_mouse_control</span><span class="p">(</span><span class="bp">self</span><span class="p">):</span>
<span class="sd">&quot;&quot;&quot;</span>
<span class="sd"> Move the mouse to center the image, scroll to increase/decrease barrel, ctrl+scroll to increase/decrease zoom</span>
<span class="sd"> &quot;&quot;&quot;</span>
<span class="nd">@mouse_loop</span>
<span class="k">def</span> <span class="nf">m_loop</span><span class="p">(</span><span class="n">me</span><span class="p">):</span>
<span class="bp">self</span><span class="o">.</span><span class="n">center</span><span class="p">[:]</span> <span class="o">=</span> <span class="p">[</span><span class="n">me</span><span class="o">.</span><span class="n">y</span><span class="p">,</span> <span class="n">me</span><span class="o">.</span><span class="n">x</span><span class="p">]</span>
<span class="k">if</span> <span class="n">me</span><span class="o">.</span><span class="n">event</span> <span class="o">==</span> <span class="n">cv2</span><span class="o">.</span><span class="n">EVENT_MOUSEWHEEL</span><span class="p">:</span>
<span class="k">if</span> <span class="n">me</span><span class="o">.</span><span class="n">flags</span> <span class="o">&amp;</span> <span class="n">cv2</span><span class="o">.</span><span class="n">EVENT_FLAG_CTRLKEY</span><span class="p">:</span>
<span class="k">if</span> <span class="n">me</span><span class="o">.</span><span class="n">flags</span> <span class="o">&gt;</span> <span class="mi">0</span><span class="p">:</span>
<span class="bp">self</span><span class="o">.</span><span class="n">zoom</span> <span class="o">*=</span> <span class="mf">1.1</span>
<span class="k">else</span><span class="p">:</span>
<span class="bp">self</span><span class="o">.</span><span class="n">zoom</span> <span class="o">/=</span> <span class="mf">1.1</span>
<span class="k">else</span><span class="p">:</span>
<span class="k">if</span> <span class="n">me</span><span class="o">.</span><span class="n">flags</span> <span class="o">&gt;</span> <span class="mi">0</span><span class="p">:</span>
<span class="bp">self</span><span class="o">.</span><span class="n">barrel_power</span> <span class="o">*=</span> <span class="mf">1.1</span>
<span class="k">else</span><span class="p">:</span>
<span class="bp">self</span><span class="o">.</span><span class="n">barrel_power</span> <span class="o">/=</span> <span class="mf">1.1</span>
<span class="bp">self</span><span class="o">.</span><span class="n">mouse_control</span> <span class="o">=</span> <span class="n">m_loop</span>
<span class="k">return</span> <span class="bp">self</span></div>
<span class="k">def</span> <span class="nf">__call__</span><span class="p">(</span><span class="bp">self</span><span class="p">,</span> <span class="n">arr</span><span class="p">):</span>
<span class="n">zoom_out</span> <span class="o">=</span> <span class="mf">1.0</span> <span class="o">/</span> <span class="bp">self</span><span class="o">.</span><span class="n">zoom</span>
<span class="bp">self</span><span class="o">.</span><span class="n">check_setup_bleed</span><span class="p">(</span><span class="n">arr</span><span class="p">)</span>
<span class="n">y</span> <span class="o">=</span> <span class="n">np</span><span class="o">.</span><span class="n">arange</span><span class="p">(</span><span class="n">arr</span><span class="o">.</span><span class="n">shape</span><span class="p">[</span><span class="mi">0</span><span class="p">])</span>
<span class="n">x</span> <span class="o">=</span> <span class="n">np</span><span class="o">.</span><span class="n">arange</span><span class="p">(</span><span class="n">arr</span><span class="o">.</span><span class="n">shape</span><span class="p">[</span><span class="mi">1</span><span class="p">])</span>
<span class="k">if</span> <span class="bp">self</span><span class="o">.</span><span class="n">center</span> <span class="ow">is</span> <span class="kc">None</span><span class="p">:</span>
<span class="bp">self</span><span class="o">.</span><span class="n">center</span> <span class="o">=</span> <span class="p">[</span><span class="nb">len</span><span class="p">(</span><span class="n">y</span><span class="p">)</span> <span class="o">/</span> <span class="mf">2.0</span><span class="p">,</span> <span class="nb">len</span><span class="p">(</span><span class="n">x</span><span class="p">)</span> <span class="o">/</span> <span class="mf">2.0</span><span class="p">]</span>
<span class="n">y2_</span> <span class="o">=</span> <span class="p">(</span><span class="n">y</span> <span class="o">-</span> <span class="p">(</span><span class="nb">len</span><span class="p">(</span><span class="n">y</span><span class="p">)</span> <span class="o">/</span> <span class="mf">2.0</span><span class="p">))</span> <span class="o">*</span> <span class="n">zoom_out</span> <span class="o">/</span> <span class="n">arr</span><span class="o">.</span><span class="n">shape</span><span class="p">[</span><span class="mi">0</span><span class="p">]</span>
<span class="n">x2_</span> <span class="o">=</span> <span class="p">(</span><span class="n">x</span> <span class="o">-</span> <span class="p">(</span><span class="nb">len</span><span class="p">(</span><span class="n">x</span><span class="p">)</span> <span class="o">/</span> <span class="mf">2.0</span><span class="p">))</span> <span class="o">*</span> <span class="n">zoom_out</span> <span class="o">/</span> <span class="n">arr</span><span class="o">.</span><span class="n">shape</span><span class="p">[</span><span class="mi">1</span><span class="p">]</span>
<span class="n">p2</span> <span class="o">=</span> <span class="n">np</span><span class="o">.</span><span class="n">array</span><span class="p">(</span><span class="n">np</span><span class="o">.</span><span class="n">meshgrid</span><span class="p">(</span><span class="n">x2_</span><span class="p">,</span> <span class="n">y2_</span><span class="p">))</span>
<span class="n">cy</span> <span class="o">=</span> <span class="bp">self</span><span class="o">.</span><span class="n">center</span><span class="p">[</span><span class="mi">0</span><span class="p">]</span> <span class="o">/</span> <span class="n">arr</span><span class="o">.</span><span class="n">shape</span><span class="p">[</span><span class="mi">0</span><span class="p">]</span>
<span class="n">cx</span> <span class="o">=</span> <span class="bp">self</span><span class="o">.</span><span class="n">center</span><span class="p">[</span><span class="mi">1</span><span class="p">]</span> <span class="o">/</span> <span class="n">arr</span><span class="o">.</span><span class="n">shape</span><span class="p">[</span><span class="mi">1</span><span class="p">]</span>
<span class="n">barrel_power</span> <span class="o">=</span> <span class="bp">self</span><span class="o">.</span><span class="n">barrel_power</span>
<span class="n">theta</span> <span class="o">=</span> <span class="n">np</span><span class="o">.</span><span class="n">arctan2</span><span class="p">(</span><span class="n">p2</span><span class="p">[</span><span class="mi">1</span><span class="p">],</span> <span class="n">p2</span><span class="p">[</span><span class="mi">0</span><span class="p">])</span>
<span class="n">radius</span> <span class="o">=</span> <span class="n">np</span><span class="o">.</span><span class="n">linalg</span><span class="o">.</span><span class="n">norm</span><span class="p">(</span><span class="n">p2</span><span class="p">,</span> <span class="n">axis</span><span class="o">=</span><span class="mi">0</span><span class="p">,</span> <span class="nb">ord</span><span class="o">=</span><span class="mi">2</span><span class="p">)</span>
<span class="n">radius</span> <span class="o">=</span> <span class="nb">pow</span><span class="p">(</span><span class="n">radius</span><span class="p">,</span> <span class="n">barrel_power</span><span class="p">)</span>
<span class="n">x_new</span> <span class="o">=</span> <span class="mf">0.5</span> <span class="o">*</span> <span class="p">(</span><span class="n">radius</span> <span class="o">*</span> <span class="n">np</span><span class="o">.</span><span class="n">cos</span><span class="p">(</span><span class="n">theta</span><span class="p">)</span> <span class="o">+</span> <span class="n">cx</span> <span class="o">*</span> <span class="mi">2</span><span class="p">)</span>
<span class="n">x_new</span> <span class="o">=</span> <span class="n">np</span><span class="o">.</span><span class="n">clip</span><span class="p">(</span><span class="n">x_new</span> <span class="o">*</span> <span class="nb">len</span><span class="p">(</span><span class="n">x</span><span class="p">),</span> <span class="mi">0</span><span class="p">,</span> <span class="nb">len</span><span class="p">(</span><span class="n">x</span><span class="p">)</span> <span class="o">-</span> <span class="mi">1</span><span class="p">)</span>
<span class="n">y_new</span> <span class="o">=</span> <span class="mf">0.5</span> <span class="o">*</span> <span class="p">(</span><span class="n">radius</span> <span class="o">*</span> <span class="n">np</span><span class="o">.</span><span class="n">sin</span><span class="p">(</span><span class="n">theta</span><span class="p">)</span> <span class="o">+</span> <span class="n">cy</span> <span class="o">*</span> <span class="mi">2</span><span class="p">)</span>
<span class="n">y_new</span> <span class="o">=</span> <span class="n">np</span><span class="o">.</span><span class="n">clip</span><span class="p">(</span><span class="n">y_new</span> <span class="o">*</span> <span class="nb">len</span><span class="p">(</span><span class="n">y</span><span class="p">),</span> <span class="mi">0</span><span class="p">,</span> <span class="nb">len</span><span class="p">(</span><span class="n">y</span><span class="p">)</span> <span class="o">-</span> <span class="mi">1</span><span class="p">)</span>
<span class="n">p</span> <span class="o">=</span> <span class="n">np</span><span class="o">.</span><span class="n">array</span><span class="p">(</span><span class="n">np</span><span class="o">.</span><span class="n">meshgrid</span><span class="p">(</span><span class="n">y</span><span class="p">,</span> <span class="n">x</span><span class="p">))</span><span class="o">.</span><span class="n">astype</span><span class="p">(</span><span class="n">np</span><span class="o">.</span><span class="n">uint32</span><span class="p">)</span>
<span class="n">p_new</span> <span class="o">=</span> <span class="n">np</span><span class="o">.</span><span class="n">array</span><span class="p">((</span><span class="n">y_new</span><span class="p">,</span> <span class="n">x_new</span><span class="p">))</span>
<span class="n">p_new</span> <span class="o">=</span> <span class="n">p_new</span><span class="o">.</span><span class="n">astype</span><span class="p">(</span><span class="n">np</span><span class="o">.</span><span class="n">uint32</span><span class="p">)</span>
<span class="k">if</span> <span class="bp">self</span><span class="o">.</span><span class="n">use_bleed</span><span class="p">:</span>
<span class="n">arr2</span> <span class="o">=</span> <span class="bp">self</span><span class="o">.</span><span class="n">bleed</span><span class="o">.</span><span class="n">copy</span><span class="p">()</span>
<span class="bp">self</span><span class="o">.</span><span class="n">run_bleed</span><span class="p">(</span><span class="n">arr2</span><span class="p">,</span> <span class="n">x</span><span class="p">,</span> <span class="n">y</span><span class="p">)</span>
<span class="n">arr2</span><span class="p">[</span><span class="n">p_new</span><span class="p">[</span><span class="mi">0</span><span class="p">],</span> <span class="n">p_new</span><span class="p">[</span><span class="mi">1</span><span class="p">],</span> <span class="p">:]</span> <span class="o">=</span> <span class="n">np</span><span class="o">.</span><span class="n">swapaxes</span><span class="p">(</span><span class="n">arr</span><span class="p">[</span><span class="n">p</span><span class="p">[</span><span class="mi">0</span><span class="p">],</span> <span class="n">p</span><span class="p">[</span><span class="mi">1</span><span class="p">],</span> <span class="p">:],</span> <span class="mi">0</span><span class="p">,</span> <span class="mi">1</span><span class="p">)</span>
<span class="bp">self</span><span class="o">.</span><span class="n">bleed</span> <span class="o">=</span> <span class="n">arr2</span>
<span class="k">else</span><span class="p">:</span>
<span class="n">arr</span><span class="p">[</span><span class="n">p</span><span class="p">[</span><span class="mi">0</span><span class="p">],</span> <span class="n">p</span><span class="p">[</span><span class="mi">1</span><span class="p">],</span> <span class="p">:]</span> <span class="o">=</span> <span class="n">np</span><span class="o">.</span><span class="n">swapaxes</span><span class="p">(</span><span class="n">arr</span><span class="p">[</span><span class="n">p_new</span><span class="p">[</span><span class="mi">0</span><span class="p">],</span> <span class="n">p_new</span><span class="p">[</span><span class="mi">1</span><span class="p">],</span> <span class="p">:],</span> <span class="mi">0</span><span class="p">,</span> <span class="mi">1</span><span class="p">)</span>
<span class="k">return</span> <span class="n">arr</span></div>
<div class="viewcode-block" id="Mustache"><a class="viewcode-back" href="../../../../lens/#displayarray.effects.lens.Mustache">[docs]</a><span class="k">class</span> <span class="nc">Mustache</span><span class="p">(</span><span class="n">ControllableLens</span><span class="p">):</span>
<span class="k">def</span> <span class="nf">__init__</span><span class="p">(</span>
<span class="bp">self</span><span class="p">,</span> <span class="n">use_bleed</span><span class="o">=</span><span class="kc">False</span><span class="p">,</span> <span class="n">barrel_power</span><span class="o">=</span><span class="mi">1</span><span class="p">,</span> <span class="n">pincushion_power</span><span class="o">=</span><span class="mi">1</span><span class="p">,</span> <span class="n">zoom</span><span class="o">=</span><span class="mi">1</span><span class="p">,</span> <span class="n">center</span><span class="o">=</span><span class="kc">None</span>
<span class="p">):</span>
<span class="nb">super</span><span class="p">()</span><span class="o">.</span><span class="fm">__init__</span><span class="p">(</span><span class="n">use_bleed</span><span class="p">,</span> <span class="n">zoom</span><span class="p">,</span> <span class="n">center</span><span class="p">)</span>
<span class="bp">self</span><span class="o">.</span><span class="n">center</span> <span class="o">=</span> <span class="n">center</span>
<span class="bp">self</span><span class="o">.</span><span class="n">zoom</span> <span class="o">=</span> <span class="n">zoom</span>
<span class="bp">self</span><span class="o">.</span><span class="n">use_bleed</span> <span class="o">=</span> <span class="n">use_bleed</span>
<span class="bp">self</span><span class="o">.</span><span class="n">bleed</span> <span class="o">=</span> <span class="kc">None</span>
<span class="bp">self</span><span class="o">.</span><span class="n">barrel_power</span> <span class="o">=</span> <span class="n">barrel_power</span>
<span class="bp">self</span><span class="o">.</span><span class="n">pincushion_power</span> <span class="o">=</span> <span class="n">pincushion_power</span>
<span class="bp">self</span><span class="o">.</span><span class="n">mouse_control</span> <span class="o">=</span> <span class="kc">None</span>
<span class="k">def</span> <span class="nf">enable_mouse_control</span><span class="p">(</span><span class="bp">self</span><span class="p">):</span>
<span class="nd">@mouse_loop</span>
<span class="k">def</span> <span class="nf">m_loop</span><span class="p">(</span><span class="n">me</span><span class="p">):</span>
<span class="bp">self</span><span class="o">.</span><span class="n">center</span><span class="p">[:]</span> <span class="o">=</span> <span class="p">[</span><span class="n">me</span><span class="o">.</span><span class="n">y</span><span class="p">,</span> <span class="n">me</span><span class="o">.</span><span class="n">x</span><span class="p">]</span>
<span class="k">if</span> <span class="n">me</span><span class="o">.</span><span class="n">event</span> <span class="o">==</span> <span class="n">cv2</span><span class="o">.</span><span class="n">EVENT_MOUSEWHEEL</span><span class="p">:</span>
<span class="k">if</span> <span class="n">me</span><span class="o">.</span><span class="n">flags</span> <span class="o">&amp;</span> <span class="n">cv2</span><span class="o">.</span><span class="n">EVENT_FLAG_CTRLKEY</span><span class="p">:</span>
<span class="k">if</span> <span class="n">me</span><span class="o">.</span><span class="n">flags</span> <span class="o">&gt;</span> <span class="mi">0</span><span class="p">:</span>
<span class="bp">self</span><span class="o">.</span><span class="n">zoom</span> <span class="o">*=</span> <span class="mf">1.1</span>
<span class="k">else</span><span class="p">:</span>
<span class="bp">self</span><span class="o">.</span><span class="n">zoom</span> <span class="o">/=</span> <span class="mf">1.1</span>
<span class="k">elif</span> <span class="n">me</span><span class="o">.</span><span class="n">flags</span> <span class="o">&amp;</span> <span class="n">cv2</span><span class="o">.</span><span class="n">EVENT_FLAG_SHIFTKEY</span><span class="p">:</span>
<span class="k">if</span> <span class="n">me</span><span class="o">.</span><span class="n">flags</span> <span class="o">&gt;</span> <span class="mi">0</span><span class="p">:</span>
<span class="bp">self</span><span class="o">.</span><span class="n">pincushion_power</span> <span class="o">*=</span> <span class="mf">1.1</span>
<span class="k">else</span><span class="p">:</span>
<span class="bp">self</span><span class="o">.</span><span class="n">pincushion_power</span> <span class="o">/=</span> <span class="mf">1.1</span>
<span class="k">else</span><span class="p">:</span>
<span class="k">if</span> <span class="n">me</span><span class="o">.</span><span class="n">flags</span> <span class="o">&gt;</span> <span class="mi">0</span><span class="p">:</span>
<span class="bp">self</span><span class="o">.</span><span class="n">barrel_power</span> <span class="o">*=</span> <span class="mf">1.1</span>
<span class="k">else</span><span class="p">:</span>
<span class="bp">self</span><span class="o">.</span><span class="n">barrel_power</span> <span class="o">/=</span> <span class="mf">1.1</span>
<span class="bp">self</span><span class="o">.</span><span class="n">mouse_control</span> <span class="o">=</span> <span class="n">m_loop</span>
<span class="k">def</span> <span class="nf">__call__</span><span class="p">(</span><span class="bp">self</span><span class="p">,</span> <span class="n">arr</span><span class="p">):</span>
<span class="n">zoom_out</span> <span class="o">=</span> <span class="mf">1.0</span> <span class="o">/</span> <span class="bp">self</span><span class="o">.</span><span class="n">zoom</span>
<span class="bp">self</span><span class="o">.</span><span class="n">check_setup_bleed</span><span class="p">(</span><span class="n">arr</span><span class="p">)</span>
<span class="n">y</span> <span class="o">=</span> <span class="n">np</span><span class="o">.</span><span class="n">arange</span><span class="p">(</span><span class="n">arr</span><span class="o">.</span><span class="n">shape</span><span class="p">[</span><span class="mi">0</span><span class="p">])</span>
<span class="n">x</span> <span class="o">=</span> <span class="n">np</span><span class="o">.</span><span class="n">arange</span><span class="p">(</span><span class="n">arr</span><span class="o">.</span><span class="n">shape</span><span class="p">[</span><span class="mi">1</span><span class="p">])</span>
<span class="k">if</span> <span class="bp">self</span><span class="o">.</span><span class="n">center</span> <span class="ow">is</span> <span class="kc">None</span><span class="p">:</span>
<span class="bp">self</span><span class="o">.</span><span class="n">center</span> <span class="o">=</span> <span class="p">[</span><span class="nb">len</span><span class="p">(</span><span class="n">y</span><span class="p">)</span> <span class="o">/</span> <span class="mf">2.0</span><span class="p">,</span> <span class="nb">len</span><span class="p">(</span><span class="n">x</span><span class="p">)</span> <span class="o">/</span> <span class="mf">2.0</span><span class="p">]</span>
<span class="n">y2_</span> <span class="o">=</span> <span class="p">(</span><span class="n">y</span> <span class="o">-</span> <span class="bp">self</span><span class="o">.</span><span class="n">center</span><span class="p">[</span><span class="mi">0</span><span class="p">])</span> <span class="o">*</span> <span class="n">zoom_out</span> <span class="o">/</span> <span class="n">arr</span><span class="o">.</span><span class="n">shape</span><span class="p">[</span><span class="mi">0</span><span class="p">]</span>
<span class="n">x2_</span> <span class="o">=</span> <span class="p">(</span><span class="n">x</span> <span class="o">-</span> <span class="bp">self</span><span class="o">.</span><span class="n">center</span><span class="p">[</span><span class="mi">1</span><span class="p">])</span> <span class="o">*</span> <span class="n">zoom_out</span> <span class="o">/</span> <span class="n">arr</span><span class="o">.</span><span class="n">shape</span><span class="p">[</span><span class="mi">1</span><span class="p">]</span>
<span class="n">p2</span> <span class="o">=</span> <span class="n">np</span><span class="o">.</span><span class="n">array</span><span class="p">(</span><span class="n">np</span><span class="o">.</span><span class="n">meshgrid</span><span class="p">(</span><span class="n">x2_</span><span class="p">,</span> <span class="n">y2_</span><span class="p">))</span>
<span class="n">barrel_power</span> <span class="o">=</span> <span class="bp">self</span><span class="o">.</span><span class="n">barrel_power</span>
<span class="n">pincushion_power</span> <span class="o">=</span> <span class="bp">self</span><span class="o">.</span><span class="n">pincushion_power</span>
<span class="n">theta</span> <span class="o">=</span> <span class="n">np</span><span class="o">.</span><span class="n">arctan2</span><span class="p">(</span><span class="n">p2</span><span class="p">[</span><span class="mi">1</span><span class="p">],</span> <span class="n">p2</span><span class="p">[</span><span class="mi">0</span><span class="p">])</span>
<span class="n">radius</span> <span class="o">=</span> <span class="n">np</span><span class="o">.</span><span class="n">linalg</span><span class="o">.</span><span class="n">norm</span><span class="p">(</span><span class="n">p2</span><span class="p">,</span> <span class="n">axis</span><span class="o">=</span><span class="mi">0</span><span class="p">)</span>
<span class="n">radius2</span> <span class="o">=</span> <span class="n">np</span><span class="o">.</span><span class="n">linalg</span><span class="o">.</span><span class="n">norm</span><span class="p">(</span><span class="n">p2</span><span class="p">,</span> <span class="n">axis</span><span class="o">=</span><span class="mi">0</span><span class="p">,</span> <span class="nb">ord</span><span class="o">=</span><span class="mi">4</span><span class="p">)</span>
<span class="n">radius</span> <span class="o">=</span> <span class="nb">pow</span><span class="p">(</span><span class="n">radius</span><span class="p">,</span> <span class="n">barrel_power</span><span class="p">)</span>
<span class="n">radius2</span> <span class="o">=</span> <span class="nb">pow</span><span class="p">(</span><span class="n">radius2</span><span class="p">,</span> <span class="n">pincushion_power</span><span class="p">)</span>
<span class="n">x_new</span> <span class="o">=</span> <span class="mf">0.5</span> <span class="o">*</span> <span class="p">(</span><span class="n">radius2</span> <span class="o">*</span> <span class="n">radius</span> <span class="o">*</span> <span class="n">np</span><span class="o">.</span><span class="n">cos</span><span class="p">(</span><span class="n">theta</span><span class="p">)</span> <span class="o">+</span> <span class="mi">1</span><span class="p">)</span>
<span class="n">x_new</span> <span class="o">=</span> <span class="n">np</span><span class="o">.</span><span class="n">clip</span><span class="p">(</span><span class="n">x_new</span> <span class="o">*</span> <span class="nb">len</span><span class="p">(</span><span class="n">x</span><span class="p">),</span> <span class="mi">0</span><span class="p">,</span> <span class="nb">len</span><span class="p">(</span><span class="n">x</span><span class="p">)</span> <span class="o">-</span> <span class="mi">1</span><span class="p">)</span>
<span class="n">y_new</span> <span class="o">=</span> <span class="mf">0.5</span> <span class="o">*</span> <span class="p">(</span><span class="n">radius2</span> <span class="o">*</span> <span class="n">radius</span> <span class="o">*</span> <span class="n">np</span><span class="o">.</span><span class="n">sin</span><span class="p">(</span><span class="n">theta</span><span class="p">)</span> <span class="o">+</span> <span class="mi">1</span><span class="p">)</span>
<span class="n">y_new</span> <span class="o">=</span> <span class="n">np</span><span class="o">.</span><span class="n">clip</span><span class="p">(</span><span class="n">y_new</span> <span class="o">*</span> <span class="nb">len</span><span class="p">(</span><span class="n">y</span><span class="p">),</span> <span class="mi">0</span><span class="p">,</span> <span class="nb">len</span><span class="p">(</span><span class="n">y</span><span class="p">)</span> <span class="o">-</span> <span class="mi">1</span><span class="p">)</span>
<span class="n">p</span> <span class="o">=</span> <span class="n">np</span><span class="o">.</span><span class="n">array</span><span class="p">(</span><span class="n">np</span><span class="o">.</span><span class="n">meshgrid</span><span class="p">(</span><span class="n">y</span><span class="p">,</span> <span class="n">x</span><span class="p">))</span><span class="o">.</span><span class="n">astype</span><span class="p">(</span><span class="n">np</span><span class="o">.</span><span class="n">uint32</span><span class="p">)</span>
<span class="n">p_new</span> <span class="o">=</span> <span class="n">np</span><span class="o">.</span><span class="n">array</span><span class="p">((</span><span class="n">y_new</span><span class="p">,</span> <span class="n">x_new</span><span class="p">))</span><span class="o">.</span><span class="n">astype</span><span class="p">(</span><span class="n">np</span><span class="o">.</span><span class="n">uint32</span><span class="p">)</span>
<span class="k">if</span> <span class="bp">self</span><span class="o">.</span><span class="n">use_bleed</span><span class="p">:</span>
<span class="n">arr2</span> <span class="o">=</span> <span class="bp">self</span><span class="o">.</span><span class="n">bleed</span><span class="o">.</span><span class="n">copy</span><span class="p">()</span>
<span class="bp">self</span><span class="o">.</span><span class="n">run_bleed</span><span class="p">(</span><span class="n">arr2</span><span class="p">,</span> <span class="n">x</span><span class="p">,</span> <span class="n">y</span><span class="p">)</span>
<span class="n">arr2</span><span class="p">[</span><span class="n">p_new</span><span class="p">[</span><span class="mi">0</span><span class="p">],</span> <span class="n">p_new</span><span class="p">[</span><span class="mi">1</span><span class="p">],</span> <span class="p">:]</span> <span class="o">=</span> <span class="n">np</span><span class="o">.</span><span class="n">swapaxes</span><span class="p">(</span><span class="n">arr</span><span class="p">[</span><span class="n">p</span><span class="p">[</span><span class="mi">0</span><span class="p">],</span> <span class="n">p</span><span class="p">[</span><span class="mi">1</span><span class="p">],</span> <span class="p">:],</span> <span class="mi">0</span><span class="p">,</span> <span class="mi">1</span><span class="p">)</span>
<span class="bp">self</span><span class="o">.</span><span class="n">bleed</span> <span class="o">=</span> <span class="n">arr2</span>
<span class="k">else</span><span class="p">:</span>
<span class="n">arr2</span> <span class="o">=</span> <span class="n">np</span><span class="o">.</span><span class="n">zeros_like</span><span class="p">(</span><span class="n">arr</span><span class="p">)</span>
<span class="n">arr2</span><span class="p">[</span><span class="n">p_new</span><span class="p">[</span><span class="mi">0</span><span class="p">],</span> <span class="n">p_new</span><span class="p">[</span><span class="mi">1</span><span class="p">],</span> <span class="p">:]</span> <span class="o">=</span> <span class="n">np</span><span class="o">.</span><span class="n">swapaxes</span><span class="p">(</span><span class="n">arr</span><span class="p">[</span><span class="n">p</span><span class="p">[</span><span class="mi">0</span><span class="p">],</span> <span class="n">p</span><span class="p">[</span><span class="mi">1</span><span class="p">],</span> <span class="p">:],</span> <span class="mi">0</span><span class="p">,</span> <span class="mi">1</span><span class="p">)</span>
<span class="k">return</span> <span class="n">arr2</span></div>
</pre></div>
</div>
</div>
</div>
<div class="sphinxsidebar" role="navigation" aria-label="main navigation">
<div class="sphinxsidebarwrapper">
<h1 class="logo"><a href="../../../../">DisplayArray</a></h1>
<h3>Navigation</h3>
<p class="caption"><span class="caption-text">Python API</span></p>
<ul>
<li class="toctree-l1"><a class="reference internal" href="../../../../displayarray/">displayarray</a></li>
<li class="toctree-l1"><a class="reference internal" href="../../../../crop/">displayarray.effects.crop</a></li>
<li class="toctree-l1"><a class="reference internal" href="../../../../lens/">displayarray.effects.lens</a></li>
<li class="toctree-l1"><a class="reference internal" href="../../../../select_channels/">displayarray.effects.select_channels</a></li>
<li class="toctree-l1"><a class="reference internal" href="../../../../frame/">displayarray.frame</a></li>
<li class="toctree-l1"><a class="reference internal" href="../../../../window/">displayarray.window</a></li>
<li class="toctree-l1"><a class="reference internal" href="../../../../input/">displayarray.input</a></li>
</ul>
<p class="caption"><span class="caption-text">Bash API</span></p>
<ul>
<li class="toctree-l1"><a class="reference internal" href="../../../../displayarray_bash/">displayarray</a></li>
</ul>
<div class="relations">
<h3>Related Topics</h3>
<ul>
<li><a href="../../../../">Documentation overview</a><ul>
<li><a href="../../../">Module code</a><ul>
</ul></li>
</ul></li>
</ul>
</div>
<div id="searchbox" style="display: none" role="search">
<h3 id="searchlabel">Quick search</h3>
<div class="searchformwrapper">
<form class="search" action="../../../../search/" method="get">
<input type="text" name="q" aria-labelledby="searchlabel" />
<input type="submit" value="Go" />
</form>
</div>
</div>
<script type="text/javascript">$('#searchbox').show(0);</script>
</div>
</div>
<div class="clearer"></div>
</div>
<div class="footer">
&copy;2019, Simulator Leek.
|
Powered by <a href="http://sphinx-doc.org/">Sphinx 2.2.1</a>
&amp; <a href="https://github.com/bitprophet/alabaster">Alabaster 0.7.12</a>
</div>
</body>
</html>
@@ -0,0 +1,172 @@
<!DOCTYPE html>
<html xmlns="http://www.w3.org/1999/xhtml">
<head>
<meta charset="utf-8" />
<title>displayarray.effects.select_channels &#8212; DisplayArray documentation</title>
<link rel="stylesheet" href="../../../../_static/alabaster.css" type="text/css" />
<link rel="stylesheet" href="../../../../_static/pygments.css" type="text/css" />
<script type="text/javascript" id="documentation_options" data-url_root="../../../../" src="../../../../_static/documentation_options.js"></script>
<script type="text/javascript" src="../../../../_static/jquery.js"></script>
<script type="text/javascript" src="../../../../_static/underscore.js"></script>
<script type="text/javascript" src="../../../../_static/doctools.js"></script>
<script type="text/javascript" src="../../../../_static/language_data.js"></script>
<link rel="index" title="Index" href="../../../../genindex/" />
<link rel="search" title="Search" href="../../../../search/" />
<link rel="stylesheet" href="../../../../_static/custom.css" type="text/css" />
<meta name="viewport" content="width=device-width, initial-scale=0.9, maximum-scale=0.9" />
</head><body>
<div class="document">
<div class="documentwrapper">
<div class="bodywrapper">
<div class="body" role="main">
<h1>Source code for displayarray.effects.select_channels</h1><div class="highlight"><pre>
<span></span><span class="kn">import</span> <span class="nn">numpy</span> <span class="k">as</span> <span class="nn">np</span>
<span class="kn">from</span> <span class="nn">..input</span> <span class="k">import</span> <span class="n">mouse_loop</span>
<span class="kn">import</span> <span class="nn">cv2</span>
<div class="viewcode-block" id="SelectChannels"><a class="viewcode-back" href="../../../../select_channels/#displayarray.effects.select_channels.SelectChannels">[docs]</a><span class="k">class</span> <span class="nc">SelectChannels</span><span class="p">(</span><span class="nb">object</span><span class="p">):</span>
<span class="k">def</span> <span class="nf">__init__</span><span class="p">(</span><span class="bp">self</span><span class="p">,</span> <span class="n">selected_channels</span><span class="o">=</span><span class="kc">None</span><span class="p">):</span>
<span class="k">if</span> <span class="n">selected_channels</span> <span class="ow">is</span> <span class="kc">None</span><span class="p">:</span>
<span class="n">selected_channels</span> <span class="o">=</span> <span class="p">[</span><span class="mi">0</span><span class="p">,</span> <span class="mi">0</span><span class="p">,</span> <span class="mi">0</span><span class="p">]</span>
<span class="bp">self</span><span class="o">.</span><span class="n">selected_channels</span> <span class="o">=</span> <span class="n">selected_channels</span>
<span class="bp">self</span><span class="o">.</span><span class="n">mouse_control</span> <span class="o">=</span> <span class="kc">None</span>
<span class="bp">self</span><span class="o">.</span><span class="n">mouse_print_channels</span> <span class="o">=</span> <span class="kc">False</span>
<span class="bp">self</span><span class="o">.</span><span class="n">num_input_channels</span> <span class="o">=</span> <span class="kc">None</span>
<span class="k">def</span> <span class="nf">__call__</span><span class="p">(</span><span class="bp">self</span><span class="p">,</span> <span class="n">arr</span><span class="p">):</span>
<span class="bp">self</span><span class="o">.</span><span class="n">num_input_channels</span> <span class="o">=</span> <span class="n">arr</span><span class="o">.</span><span class="n">shape</span><span class="p">[</span><span class="o">-</span><span class="mi">1</span><span class="p">]</span>
<span class="n">out_arr</span> <span class="o">=</span> <span class="p">[</span>
<span class="n">arr</span><span class="p">[</span><span class="o">...</span><span class="p">,</span> <span class="nb">min</span><span class="p">(</span><span class="nb">max</span><span class="p">(</span><span class="mi">0</span><span class="p">,</span> <span class="n">x</span><span class="p">),</span> <span class="n">arr</span><span class="o">.</span><span class="n">shape</span><span class="p">[</span><span class="o">-</span><span class="mi">1</span><span class="p">]</span> <span class="o">-</span> <span class="mi">1</span><span class="p">)]</span> <span class="k">for</span> <span class="n">x</span> <span class="ow">in</span> <span class="bp">self</span><span class="o">.</span><span class="n">selected_channels</span>
<span class="p">]</span>
<span class="n">out_arr</span> <span class="o">=</span> <span class="n">np</span><span class="o">.</span><span class="n">stack</span><span class="p">(</span><span class="n">out_arr</span><span class="p">,</span> <span class="n">axis</span><span class="o">=-</span><span class="mi">1</span><span class="p">)</span>
<span class="k">return</span> <span class="n">out_arr</span>
<span class="k">def</span> <span class="nf">enable_mouse_control</span><span class="p">(</span><span class="bp">self</span><span class="p">):</span>
<span class="nd">@mouse_loop</span>
<span class="k">def</span> <span class="nf">m_loop</span><span class="p">(</span><span class="n">me</span><span class="p">):</span>
<span class="k">if</span> <span class="n">me</span><span class="o">.</span><span class="n">event</span> <span class="o">==</span> <span class="n">cv2</span><span class="o">.</span><span class="n">EVENT_MOUSEWHEEL</span><span class="p">:</span>
<span class="k">if</span> <span class="n">me</span><span class="o">.</span><span class="n">flags</span> <span class="o">&amp;</span> <span class="n">cv2</span><span class="o">.</span><span class="n">EVENT_FLAG_CTRLKEY</span><span class="p">:</span>
<span class="k">if</span> <span class="n">me</span><span class="o">.</span><span class="n">flags</span> <span class="o">&gt;</span> <span class="mi">0</span><span class="p">:</span>
<span class="bp">self</span><span class="o">.</span><span class="n">selected_channels</span><span class="p">[</span><span class="mi">0</span><span class="p">]</span> <span class="o">+=</span> <span class="mi">1</span>
<span class="bp">self</span><span class="o">.</span><span class="n">selected_channels</span><span class="p">[</span><span class="mi">0</span><span class="p">]</span> <span class="o">=</span> <span class="nb">min</span><span class="p">(</span>
<span class="bp">self</span><span class="o">.</span><span class="n">selected_channels</span><span class="p">[</span><span class="mi">0</span><span class="p">],</span> <span class="bp">self</span><span class="o">.</span><span class="n">num_input_channels</span> <span class="o">-</span> <span class="mi">1</span>
<span class="p">)</span>
<span class="k">else</span><span class="p">:</span>
<span class="bp">self</span><span class="o">.</span><span class="n">selected_channels</span><span class="p">[</span><span class="mi">0</span><span class="p">]</span> <span class="o">-=</span> <span class="mi">1</span>
<span class="bp">self</span><span class="o">.</span><span class="n">selected_channels</span><span class="p">[</span><span class="mi">0</span><span class="p">]</span> <span class="o">=</span> <span class="nb">max</span><span class="p">(</span><span class="bp">self</span><span class="o">.</span><span class="n">selected_channels</span><span class="p">[</span><span class="mi">0</span><span class="p">],</span> <span class="mi">0</span><span class="p">)</span>
<span class="k">if</span> <span class="bp">self</span><span class="o">.</span><span class="n">mouse_print_channels</span><span class="p">:</span>
<span class="nb">print</span><span class="p">(</span><span class="n">f</span><span class="s2">&quot;Channel 0 now maps to </span><span class="si">{self.selected_channels[0]}</span><span class="s2">.&quot;</span><span class="p">)</span>
<span class="k">elif</span> <span class="n">me</span><span class="o">.</span><span class="n">flags</span> <span class="o">&amp;</span> <span class="n">cv2</span><span class="o">.</span><span class="n">EVENT_FLAG_SHIFTKEY</span><span class="p">:</span>
<span class="k">if</span> <span class="n">me</span><span class="o">.</span><span class="n">flags</span> <span class="o">&gt;</span> <span class="mi">0</span><span class="p">:</span>
<span class="bp">self</span><span class="o">.</span><span class="n">selected_channels</span><span class="p">[</span><span class="mi">1</span><span class="p">]</span> <span class="o">+=</span> <span class="mi">1</span>
<span class="bp">self</span><span class="o">.</span><span class="n">selected_channels</span><span class="p">[</span><span class="mi">1</span><span class="p">]</span> <span class="o">=</span> <span class="nb">min</span><span class="p">(</span>
<span class="bp">self</span><span class="o">.</span><span class="n">selected_channels</span><span class="p">[</span><span class="mi">1</span><span class="p">],</span> <span class="bp">self</span><span class="o">.</span><span class="n">num_input_channels</span> <span class="o">-</span> <span class="mi">1</span>
<span class="p">)</span>
<span class="k">else</span><span class="p">:</span>
<span class="bp">self</span><span class="o">.</span><span class="n">selected_channels</span><span class="p">[</span><span class="mi">1</span><span class="p">]</span> <span class="o">-=</span> <span class="mi">1</span>
<span class="bp">self</span><span class="o">.</span><span class="n">selected_channels</span><span class="p">[</span><span class="mi">1</span><span class="p">]</span> <span class="o">=</span> <span class="nb">max</span><span class="p">(</span><span class="bp">self</span><span class="o">.</span><span class="n">selected_channels</span><span class="p">[</span><span class="mi">1</span><span class="p">],</span> <span class="mi">0</span><span class="p">)</span>
<span class="k">if</span> <span class="bp">self</span><span class="o">.</span><span class="n">mouse_print_channels</span><span class="p">:</span>
<span class="nb">print</span><span class="p">(</span><span class="n">f</span><span class="s2">&quot;Channel 1 now maps to </span><span class="si">{self.selected_channels[1]}</span><span class="s2">.&quot;</span><span class="p">)</span>
<span class="k">elif</span> <span class="n">me</span><span class="o">.</span><span class="n">flags</span> <span class="o">&amp;</span> <span class="n">cv2</span><span class="o">.</span><span class="n">EVENT_FLAG_ALTKEY</span><span class="p">:</span>
<span class="k">if</span> <span class="n">me</span><span class="o">.</span><span class="n">flags</span> <span class="o">&gt;</span> <span class="mi">0</span><span class="p">:</span>
<span class="bp">self</span><span class="o">.</span><span class="n">selected_channels</span><span class="p">[</span><span class="mi">2</span><span class="p">]</span> <span class="o">+=</span> <span class="mi">1</span>
<span class="bp">self</span><span class="o">.</span><span class="n">selected_channels</span><span class="p">[</span><span class="mi">2</span><span class="p">]</span> <span class="o">=</span> <span class="nb">min</span><span class="p">(</span>
<span class="bp">self</span><span class="o">.</span><span class="n">selected_channels</span><span class="p">[</span><span class="mi">2</span><span class="p">],</span> <span class="bp">self</span><span class="o">.</span><span class="n">num_input_channels</span> <span class="o">-</span> <span class="mi">1</span>
<span class="p">)</span>
<span class="k">else</span><span class="p">:</span>
<span class="bp">self</span><span class="o">.</span><span class="n">selected_channels</span><span class="p">[</span><span class="mi">2</span><span class="p">]</span> <span class="o">-=</span> <span class="mi">1</span>
<span class="bp">self</span><span class="o">.</span><span class="n">selected_channels</span><span class="p">[</span><span class="mi">2</span><span class="p">]</span> <span class="o">=</span> <span class="nb">max</span><span class="p">(</span><span class="bp">self</span><span class="o">.</span><span class="n">selected_channels</span><span class="p">[</span><span class="mi">2</span><span class="p">],</span> <span class="mi">0</span><span class="p">)</span>
<span class="k">if</span> <span class="bp">self</span><span class="o">.</span><span class="n">mouse_print_channels</span><span class="p">:</span>
<span class="nb">print</span><span class="p">(</span><span class="n">f</span><span class="s2">&quot;Channel 2 now maps to </span><span class="si">{self.selected_channels[2]}</span><span class="s2">.&quot;</span><span class="p">)</span>
<span class="bp">self</span><span class="o">.</span><span class="n">mouse_control</span> <span class="o">=</span> <span class="n">m_loop</span></div>
</pre></div>
</div>
</div>
</div>
<div class="sphinxsidebar" role="navigation" aria-label="main navigation">
<div class="sphinxsidebarwrapper">
<h1 class="logo"><a href="../../../../">DisplayArray</a></h1>
<h3>Navigation</h3>
<p class="caption"><span class="caption-text">Python API</span></p>
<ul>
<li class="toctree-l1"><a class="reference internal" href="../../../../displayarray/">displayarray</a></li>
<li class="toctree-l1"><a class="reference internal" href="../../../../crop/">displayarray.effects.crop</a></li>
<li class="toctree-l1"><a class="reference internal" href="../../../../lens/">displayarray.effects.lens</a></li>
<li class="toctree-l1"><a class="reference internal" href="../../../../select_channels/">displayarray.effects.select_channels</a></li>
<li class="toctree-l1"><a class="reference internal" href="../../../../frame/">displayarray.frame</a></li>
<li class="toctree-l1"><a class="reference internal" href="../../../../window/">displayarray.window</a></li>
<li class="toctree-l1"><a class="reference internal" href="../../../../input/">displayarray.input</a></li>
</ul>
<p class="caption"><span class="caption-text">Bash API</span></p>
<ul>
<li class="toctree-l1"><a class="reference internal" href="../../../../displayarray_bash/">displayarray</a></li>
</ul>
<div class="relations">
<h3>Related Topics</h3>
<ul>
<li><a href="../../../../">Documentation overview</a><ul>
<li><a href="../../../">Module code</a><ul>
</ul></li>
</ul></li>
</ul>
</div>
<div id="searchbox" style="display: none" role="search">
<h3 id="searchlabel">Quick search</h3>
<div class="searchformwrapper">
<form class="search" action="../../../../search/" method="get">
<input type="text" name="q" aria-labelledby="searchlabel" />
<input type="submit" value="Go" />
</form>
</div>
</div>
<script type="text/javascript">$('#searchbox').show(0);</script>
</div>
</div>
<div class="clearer"></div>
</div>
<div class="footer">
&copy;2019, Simulator Leek.
|
Powered by <a href="http://sphinx-doc.org/">Sphinx 2.2.1</a>
&amp; <a href="https://github.com/bitprophet/alabaster">Alabaster 0.7.12</a>
</div>
</body>
</html>
File diff suppressed because it is too large Load Diff
File diff suppressed because it is too large Load Diff
@@ -0,0 +1,127 @@
<!DOCTYPE html>
<html xmlns="http://www.w3.org/1999/xhtml">
<head>
<meta charset="utf-8" />
<title>displayarray.frame.get_frame_ids &#8212; DisplayArray documentation</title>
<link rel="stylesheet" href="../../../../_static/alabaster.css" type="text/css" />
<link rel="stylesheet" href="../../../../_static/pygments.css" type="text/css" />
<script type="text/javascript" id="documentation_options" data-url_root="../../../../" src="../../../../_static/documentation_options.js"></script>
<script type="text/javascript" src="../../../../_static/jquery.js"></script>
<script type="text/javascript" src="../../../../_static/underscore.js"></script>
<script type="text/javascript" src="../../../../_static/doctools.js"></script>
<script type="text/javascript" src="../../../../_static/language_data.js"></script>
<link rel="index" title="Index" href="../../../../genindex/" />
<link rel="search" title="Search" href="../../../../search/" />
<link rel="stylesheet" href="../../../../_static/custom.css" type="text/css" />
<meta name="viewport" content="width=device-width, initial-scale=0.9, maximum-scale=0.9" />
</head><body>
<div class="document">
<div class="documentwrapper">
<div class="bodywrapper">
<div class="body" role="main">
<h1>Source code for displayarray.frame.get_frame_ids</h1><div class="highlight"><pre>
<span></span><span class="kn">import</span> <span class="nn">cv2</span>
<span class="kn">from</span> <span class="nn">typing</span> <span class="k">import</span> <span class="n">List</span>
<div class="viewcode-block" id="get_cam_ids"><a class="viewcode-back" href="../../../../frame/#displayarray.frame.get_cam_ids">[docs]</a><span class="k">def</span> <span class="nf">get_cam_ids</span><span class="p">()</span> <span class="o">-&gt;</span> <span class="n">List</span><span class="p">[</span><span class="nb">int</span><span class="p">]:</span>
<span class="sd">&quot;&quot;&quot;Get all cameras that OpenCV can currently detect.&quot;&quot;&quot;</span>
<span class="n">cam_list</span><span class="p">:</span> <span class="n">List</span><span class="p">[</span><span class="nb">int</span><span class="p">]</span> <span class="o">=</span> <span class="p">[]</span>
<span class="k">while</span> <span class="kc">True</span><span class="p">:</span>
<span class="n">cam</span> <span class="o">=</span> <span class="n">cv2</span><span class="o">.</span><span class="n">VideoCapture</span><span class="p">(</span><span class="nb">len</span><span class="p">(</span><span class="n">cam_list</span><span class="p">))</span>
<span class="k">if</span> <span class="ow">not</span> <span class="n">cam</span><span class="o">.</span><span class="n">isOpened</span><span class="p">():</span>
<span class="k">break</span>
<span class="n">cam_list</span><span class="o">.</span><span class="n">append</span><span class="p">(</span><span class="nb">len</span><span class="p">(</span><span class="n">cam_list</span><span class="p">))</span>
<span class="k">return</span> <span class="n">cam_list</span></div>
</pre></div>
</div>
</div>
</div>
<div class="sphinxsidebar" role="navigation" aria-label="main navigation">
<div class="sphinxsidebarwrapper">
<h1 class="logo"><a href="../../../../">DisplayArray</a></h1>
<h3>Navigation</h3>
<p class="caption"><span class="caption-text">Python API</span></p>
<ul>
<li class="toctree-l1"><a class="reference internal" href="../../../../displayarray/">displayarray</a></li>
<li class="toctree-l1"><a class="reference internal" href="../../../../crop/">displayarray.effects.crop</a></li>
<li class="toctree-l1"><a class="reference internal" href="../../../../lens/">displayarray.effects.lens</a></li>
<li class="toctree-l1"><a class="reference internal" href="../../../../select_channels/">displayarray.effects.select_channels</a></li>
<li class="toctree-l1"><a class="reference internal" href="../../../../frame/">displayarray.frame</a></li>
<li class="toctree-l1"><a class="reference internal" href="../../../../window/">displayarray.window</a></li>
<li class="toctree-l1"><a class="reference internal" href="../../../../input/">displayarray.input</a></li>
</ul>
<p class="caption"><span class="caption-text">Bash API</span></p>
<ul>
<li class="toctree-l1"><a class="reference internal" href="../../../../displayarray_bash/">displayarray</a></li>
</ul>
<div class="relations">
<h3>Related Topics</h3>
<ul>
<li><a href="../../../../">Documentation overview</a><ul>
<li><a href="../../../">Module code</a><ul>
</ul></li>
</ul></li>
</ul>
</div>
<div id="searchbox" style="display: none" role="search">
<h3 id="searchlabel">Quick search</h3>
<div class="searchformwrapper">
<form class="search" action="../../../../search/" method="get">
<input type="text" name="q" aria-labelledby="searchlabel" />
<input type="submit" value="Go" />
</form>
</div>
</div>
<script type="text/javascript">$('#searchbox').show(0);</script>
</div>
</div>
<div class="clearer"></div>
</div>
<div class="footer">
&copy;2019, Simulator Leek.
|
Powered by <a href="http://sphinx-doc.org/">Sphinx 2.2.1</a>
&amp; <a href="https://github.com/bitprophet/alabaster">Alabaster 0.7.12</a>
</div>
</body>
</html>
@@ -0,0 +1,165 @@
<!DOCTYPE html>
<html xmlns="http://www.w3.org/1999/xhtml">
<head>
<meta charset="utf-8" />
<title>displayarray.frame.np_to_opencv &#8212; DisplayArray documentation</title>
<link rel="stylesheet" href="../../../../_static/alabaster.css" type="text/css" />
<link rel="stylesheet" href="../../../../_static/pygments.css" type="text/css" />
<script type="text/javascript" id="documentation_options" data-url_root="../../../../" src="../../../../_static/documentation_options.js"></script>
<script type="text/javascript" src="../../../../_static/jquery.js"></script>
<script type="text/javascript" src="../../../../_static/underscore.js"></script>
<script type="text/javascript" src="../../../../_static/doctools.js"></script>
<script type="text/javascript" src="../../../../_static/language_data.js"></script>
<link rel="index" title="Index" href="../../../../genindex/" />
<link rel="search" title="Search" href="../../../../search/" />
<link rel="stylesheet" href="../../../../_static/custom.css" type="text/css" />
<meta name="viewport" content="width=device-width, initial-scale=0.9, maximum-scale=0.9" />
</head><body>
<div class="document">
<div class="documentwrapper">
<div class="bodywrapper">
<div class="body" role="main">
<h1>Source code for displayarray.frame.np_to_opencv</h1><div class="highlight"><pre>
<span></span><span class="kn">import</span> <span class="nn">numpy</span> <span class="k">as</span> <span class="nn">np</span>
<span class="kn">import</span> <span class="nn">cv2</span>
<div class="viewcode-block" id="NpCam"><a class="viewcode-back" href="../../../../frame/#displayarray.frame.NpCam">[docs]</a><span class="k">class</span> <span class="nc">NpCam</span><span class="p">(</span><span class="nb">object</span><span class="p">):</span>
<span class="sd">&quot;&quot;&quot;Add OpenCV camera controls to a numpy array.&quot;&quot;&quot;</span>
<span class="k">def</span> <span class="nf">__init__</span><span class="p">(</span><span class="bp">self</span><span class="p">,</span> <span class="n">img</span><span class="p">):</span>
<span class="k">assert</span> <span class="nb">isinstance</span><span class="p">(</span><span class="n">img</span><span class="p">,</span> <span class="n">np</span><span class="o">.</span><span class="n">ndarray</span><span class="p">)</span>
<span class="bp">self</span><span class="o">.</span><span class="n">__img</span> <span class="o">=</span> <span class="n">img</span>
<span class="bp">self</span><span class="o">.</span><span class="n">__is_opened</span> <span class="o">=</span> <span class="kc">True</span>
<span class="bp">self</span><span class="o">.</span><span class="n">__width</span> <span class="o">=</span> <span class="bp">self</span><span class="o">.</span><span class="n">__img</span><span class="o">.</span><span class="n">shape</span><span class="p">[</span><span class="mi">1</span><span class="p">]</span>
<span class="bp">self</span><span class="o">.</span><span class="n">__height</span> <span class="o">=</span> <span class="bp">self</span><span class="o">.</span><span class="n">__img</span><span class="o">.</span><span class="n">shape</span><span class="p">[</span><span class="mi">0</span><span class="p">]</span>
<span class="bp">self</span><span class="o">.</span><span class="n">__ratio</span> <span class="o">=</span> <span class="nb">float</span><span class="p">(</span><span class="bp">self</span><span class="o">.</span><span class="n">__width</span><span class="p">)</span> <span class="o">/</span> <span class="bp">self</span><span class="o">.</span><span class="n">__height</span>
<span class="bp">self</span><span class="o">.</span><span class="n">__wait_for_ratio</span> <span class="o">=</span> <span class="kc">False</span>
<span class="k">def</span> <span class="nf">__handler_ratio</span><span class="p">(</span><span class="bp">self</span><span class="p">):</span>
<span class="k">if</span> <span class="bp">self</span><span class="o">.</span><span class="n">__width</span> <span class="o">&lt;=</span> <span class="mi">0</span> <span class="ow">or</span> <span class="ow">not</span> <span class="nb">isinstance</span><span class="p">(</span><span class="bp">self</span><span class="o">.</span><span class="n">__width</span><span class="p">,</span> <span class="nb">int</span><span class="p">):</span>
<span class="bp">self</span><span class="o">.</span><span class="n">__width</span> <span class="o">=</span> <span class="nb">int</span><span class="p">(</span><span class="bp">self</span><span class="o">.</span><span class="n">__ratio</span> <span class="o">*</span> <span class="bp">self</span><span class="o">.</span><span class="n">__height</span><span class="p">)</span>
<span class="k">elif</span> <span class="bp">self</span><span class="o">.</span><span class="n">__height</span> <span class="o">&lt;=</span> <span class="mi">0</span> <span class="ow">or</span> <span class="ow">not</span> <span class="nb">isinstance</span><span class="p">(</span><span class="bp">self</span><span class="o">.</span><span class="n">__height</span><span class="p">,</span> <span class="nb">int</span><span class="p">):</span>
<span class="bp">self</span><span class="o">.</span><span class="n">__height</span> <span class="o">=</span> <span class="nb">int</span><span class="p">(</span><span class="bp">self</span><span class="o">.</span><span class="n">__width</span> <span class="o">/</span> <span class="bp">self</span><span class="o">.</span><span class="n">__ratio</span><span class="p">)</span>
<span class="k">if</span> <span class="bp">self</span><span class="o">.</span><span class="n">__width</span> <span class="o">&gt;</span> <span class="mi">0</span> <span class="ow">and</span> <span class="bp">self</span><span class="o">.</span><span class="n">__height</span> <span class="o">&gt;</span> <span class="mi">0</span><span class="p">:</span>
<span class="bp">self</span><span class="o">.</span><span class="n">__img</span> <span class="o">=</span> <span class="n">cv2</span><span class="o">.</span><span class="n">resize</span><span class="p">(</span><span class="bp">self</span><span class="o">.</span><span class="n">__img</span><span class="p">,</span> <span class="p">(</span><span class="bp">self</span><span class="o">.</span><span class="n">__width</span><span class="p">,</span> <span class="bp">self</span><span class="o">.</span><span class="n">__height</span><span class="p">))</span>
<div class="viewcode-block" id="NpCam.set"><a class="viewcode-back" href="../../../../frame/#displayarray.frame.NpCam.set">[docs]</a> <span class="k">def</span> <span class="nf">set</span><span class="p">(</span><span class="bp">self</span><span class="p">,</span> <span class="o">*</span><span class="n">args</span><span class="p">,</span> <span class="o">**</span><span class="n">kwargs</span><span class="p">):</span>
<span class="sd">&quot;&quot;&quot;Set CAP_PROP_FRAME_WIDTH or CAP_PROP_FRAME_HEIGHT to scale a numpy array to that size.&quot;&quot;&quot;</span>
<span class="k">if</span> <span class="n">args</span><span class="p">[</span><span class="mi">0</span><span class="p">]</span> <span class="ow">in</span> <span class="p">[</span><span class="n">cv2</span><span class="o">.</span><span class="n">CAP_PROP_FRAME_WIDTH</span><span class="p">,</span> <span class="n">cv2</span><span class="o">.</span><span class="n">CAP_PROP_FRAME_HEIGHT</span><span class="p">]:</span>
<span class="bp">self</span><span class="o">.</span><span class="n">__wait_for_ratio</span> <span class="o">=</span> <span class="ow">not</span> <span class="bp">self</span><span class="o">.</span><span class="n">__wait_for_ratio</span>
<span class="k">if</span> <span class="n">args</span><span class="p">[</span><span class="mi">0</span><span class="p">]</span> <span class="o">==</span> <span class="n">cv2</span><span class="o">.</span><span class="n">CAP_PROP_FRAME_WIDTH</span><span class="p">:</span>
<span class="bp">self</span><span class="o">.</span><span class="n">__width</span> <span class="o">=</span> <span class="n">args</span><span class="p">[</span><span class="mi">1</span><span class="p">]</span>
<span class="k">else</span><span class="p">:</span>
<span class="bp">self</span><span class="o">.</span><span class="n">__height</span> <span class="o">=</span> <span class="n">args</span><span class="p">[</span><span class="mi">1</span><span class="p">]</span>
<span class="k">if</span> <span class="ow">not</span> <span class="bp">self</span><span class="o">.</span><span class="n">__wait_for_ratio</span><span class="p">:</span>
<span class="bp">self</span><span class="o">.</span><span class="n">__handler_ratio</span><span class="p">()</span></div>
<div class="viewcode-block" id="NpCam.get"><a class="viewcode-back" href="../../../../frame/#displayarray.frame.NpCam.get">[docs]</a> <span class="nd">@staticmethod</span>
<span class="k">def</span> <span class="nf">get</span><span class="p">(</span><span class="o">*</span><span class="n">args</span><span class="p">,</span> <span class="o">**</span><span class="n">kwargs</span><span class="p">):</span>
<span class="sd">&quot;&quot;&quot;Get OpenCV args. Currently only a fake CAP_PROP_FRAME_COUNT to fix detecting video ends.&quot;&quot;&quot;</span>
<span class="k">if</span> <span class="n">args</span><span class="p">[</span><span class="mi">0</span><span class="p">]</span> <span class="o">==</span> <span class="n">cv2</span><span class="o">.</span><span class="n">CAP_PROP_FRAME_COUNT</span><span class="p">:</span>
<span class="k">return</span> <span class="nb">float</span><span class="p">(</span><span class="s2">&quot;inf&quot;</span><span class="p">)</span></div>
<div class="viewcode-block" id="NpCam.read"><a class="viewcode-back" href="../../../../frame/#displayarray.frame.NpCam.read">[docs]</a> <span class="k">def</span> <span class="nf">read</span><span class="p">(</span><span class="bp">self</span><span class="p">):</span>
<span class="sd">&quot;&quot;&quot;Read back the numpy array in standard &quot;did it work&quot;, &quot;the array&quot;, OpenCV format.&quot;&quot;&quot;</span>
<span class="k">return</span> <span class="kc">True</span><span class="p">,</span> <span class="bp">self</span><span class="o">.</span><span class="n">__img</span></div>
<div class="viewcode-block" id="NpCam.isOpened"><a class="viewcode-back" href="../../../../frame/#displayarray.frame.NpCam.isOpened">[docs]</a> <span class="k">def</span> <span class="nf">isOpened</span><span class="p">(</span><span class="bp">self</span><span class="p">):</span> <span class="c1"># NOSONAR</span>
<span class="sd">&quot;&quot;&quot;Hack to tell OpenCV we&#39;re opened until we call release.&quot;&quot;&quot;</span>
<span class="k">return</span> <span class="bp">self</span><span class="o">.</span><span class="n">__is_opened</span></div>
<div class="viewcode-block" id="NpCam.release"><a class="viewcode-back" href="../../../../frame/#displayarray.frame.NpCam.release">[docs]</a> <span class="k">def</span> <span class="nf">release</span><span class="p">(</span><span class="bp">self</span><span class="p">):</span>
<span class="sd">&quot;&quot;&quot;Let OpenCV know we&#39;re finished.&quot;&quot;&quot;</span>
<span class="bp">self</span><span class="o">.</span><span class="n">__is_opened</span> <span class="o">=</span> <span class="kc">False</span></div></div>
</pre></div>
</div>
</div>
</div>
<div class="sphinxsidebar" role="navigation" aria-label="main navigation">
<div class="sphinxsidebarwrapper">
<h1 class="logo"><a href="../../../../">DisplayArray</a></h1>
<h3>Navigation</h3>
<p class="caption"><span class="caption-text">Python API</span></p>
<ul>
<li class="toctree-l1"><a class="reference internal" href="../../../../displayarray/">displayarray</a></li>
<li class="toctree-l1"><a class="reference internal" href="../../../../crop/">displayarray.effects.crop</a></li>
<li class="toctree-l1"><a class="reference internal" href="../../../../lens/">displayarray.effects.lens</a></li>
<li class="toctree-l1"><a class="reference internal" href="../../../../select_channels/">displayarray.effects.select_channels</a></li>
<li class="toctree-l1"><a class="reference internal" href="../../../../frame/">displayarray.frame</a></li>
<li class="toctree-l1"><a class="reference internal" href="../../../../window/">displayarray.window</a></li>
<li class="toctree-l1"><a class="reference internal" href="../../../../input/">displayarray.input</a></li>
</ul>
<p class="caption"><span class="caption-text">Bash API</span></p>
<ul>
<li class="toctree-l1"><a class="reference internal" href="../../../../displayarray_bash/">displayarray</a></li>
</ul>
<div class="relations">
<h3>Related Topics</h3>
<ul>
<li><a href="../../../../">Documentation overview</a><ul>
<li><a href="../../../">Module code</a><ul>
</ul></li>
</ul></li>
</ul>
</div>
<div id="searchbox" style="display: none" role="search">
<h3 id="searchlabel">Quick search</h3>
<div class="searchformwrapper">
<form class="search" action="../../../../search/" method="get">
<input type="text" name="q" aria-labelledby="searchlabel" />
<input type="submit" value="Go" />
</form>
</div>
</div>
<script type="text/javascript">$('#searchbox').show(0);</script>
</div>
</div>
<div class="clearer"></div>
</div>
<div class="footer">
&copy;2019, Simulator Leek.
|
Powered by <a href="http://sphinx-doc.org/">Sphinx 2.2.1</a>
&amp; <a href="https://github.com/bitprophet/alabaster">Alabaster 0.7.12</a>
</div>
</body>
</html>
+233
View File
@@ -0,0 +1,233 @@
<!DOCTYPE html>
<html xmlns="http://www.w3.org/1999/xhtml">
<head>
<meta charset="utf-8" />
<title>displayarray.input &#8212; DisplayArray documentation</title>
<link rel="stylesheet" href="../../../_static/alabaster.css" type="text/css" />
<link rel="stylesheet" href="../../../_static/pygments.css" type="text/css" />
<script type="text/javascript" id="documentation_options" data-url_root="../../../" src="../../../_static/documentation_options.js"></script>
<script type="text/javascript" src="../../../_static/jquery.js"></script>
<script type="text/javascript" src="../../../_static/underscore.js"></script>
<script type="text/javascript" src="../../../_static/doctools.js"></script>
<script type="text/javascript" src="../../../_static/language_data.js"></script>
<link rel="index" title="Index" href="../../../genindex/" />
<link rel="search" title="Search" href="../../../search/" />
<link rel="stylesheet" href="../../../_static/custom.css" type="text/css" />
<meta name="viewport" content="width=device-width, initial-scale=0.9, maximum-scale=0.9" />
</head><body>
<div class="document">
<div class="documentwrapper">
<div class="bodywrapper">
<div class="body" role="main">
<h1>Source code for displayarray.input</h1><div class="highlight"><pre>
<span></span><span class="kn">from</span> <span class="nn">displayarray.window</span> <span class="k">import</span> <span class="n">window_commands</span>
<span class="kn">import</span> <span class="nn">threading</span>
<span class="kn">import</span> <span class="nn">time</span>
<span class="kn">from</span> <span class="nn">typing</span> <span class="k">import</span> <span class="n">Callable</span>
<div class="viewcode-block" id="MouseEvent"><a class="viewcode-back" href="../../../input/#displayarray.input.MouseEvent">[docs]</a><span class="k">class</span> <span class="nc">MouseEvent</span><span class="p">(</span><span class="nb">object</span><span class="p">):</span>
<span class="sd">&quot;&quot;&quot;Holds all the OpenCV mouse event information.&quot;&quot;&quot;</span>
<span class="k">def</span> <span class="nf">__init__</span><span class="p">(</span><span class="bp">self</span><span class="p">,</span> <span class="n">event</span><span class="p">,</span> <span class="n">x</span><span class="p">,</span> <span class="n">y</span><span class="p">,</span> <span class="n">flags</span><span class="p">,</span> <span class="n">param</span><span class="p">):</span>
<span class="bp">self</span><span class="o">.</span><span class="n">event</span> <span class="o">=</span> <span class="n">event</span>
<span class="bp">self</span><span class="o">.</span><span class="n">x</span> <span class="o">=</span> <span class="n">x</span>
<span class="bp">self</span><span class="o">.</span><span class="n">y</span> <span class="o">=</span> <span class="n">y</span>
<span class="bp">self</span><span class="o">.</span><span class="n">flags</span> <span class="o">=</span> <span class="n">flags</span>
<span class="bp">self</span><span class="o">.</span><span class="n">param</span> <span class="o">=</span> <span class="n">param</span>
<span class="k">def</span> <span class="nf">__repr__</span><span class="p">(</span><span class="bp">self</span><span class="p">):</span>
<span class="k">return</span> <span class="bp">self</span><span class="o">.</span><span class="fm">__str__</span><span class="p">()</span>
<span class="k">def</span> <span class="nf">__str__</span><span class="p">(</span><span class="bp">self</span><span class="p">):</span>
<span class="k">return</span> <span class="s2">&quot;event:</span><span class="si">{}</span><span class="se">\n</span><span class="s2">x,y:</span><span class="si">{}</span><span class="s2">,</span><span class="si">{}</span><span class="se">\n</span><span class="s2">flags:</span><span class="si">{}</span><span class="se">\n</span><span class="s2">param:</span><span class="si">{}</span><span class="se">\n</span><span class="s2">&quot;</span><span class="o">.</span><span class="n">format</span><span class="p">(</span>
<span class="bp">self</span><span class="o">.</span><span class="n">event</span><span class="p">,</span> <span class="bp">self</span><span class="o">.</span><span class="n">x</span><span class="p">,</span> <span class="bp">self</span><span class="o">.</span><span class="n">y</span><span class="p">,</span> <span class="bp">self</span><span class="o">.</span><span class="n">flags</span><span class="p">,</span> <span class="bp">self</span><span class="o">.</span><span class="n">param</span>
<span class="p">)</span></div>
<span class="k">class</span> <span class="nc">_mouse_thread</span><span class="p">(</span><span class="nb">object</span><span class="p">):</span> <span class="c1"># NOSONAR</span>
<span class="sd">&quot;&quot;&quot;Run a function on mouse information that is received by the window.&quot;&quot;&quot;</span>
<span class="k">def</span> <span class="nf">__init__</span><span class="p">(</span><span class="bp">self</span><span class="p">,</span> <span class="n">f</span><span class="p">):</span>
<span class="bp">self</span><span class="o">.</span><span class="n">f</span> <span class="o">=</span> <span class="n">f</span>
<span class="bp">self</span><span class="o">.</span><span class="n">sub_mouse</span> <span class="o">=</span> <span class="n">window_commands</span><span class="o">.</span><span class="n">mouse_pub</span><span class="o">.</span><span class="n">make_sub</span><span class="p">()</span>
<span class="k">def</span> <span class="nf">__call__</span><span class="p">(</span><span class="bp">self</span><span class="p">,</span> <span class="o">*</span><span class="n">args</span><span class="p">,</span> <span class="o">**</span><span class="n">kwargs</span><span class="p">):</span>
<span class="sd">&quot;&quot;&quot;Call the function this was set up with.&quot;&quot;&quot;</span>
<span class="bp">self</span><span class="o">.</span><span class="n">f</span><span class="p">(</span><span class="bp">self</span><span class="o">.</span><span class="n">sub_mouse</span><span class="p">,</span> <span class="o">*</span><span class="n">args</span><span class="p">,</span> <span class="o">**</span><span class="n">kwargs</span><span class="p">)</span>
<span class="k">class</span> <span class="nc">_mouse_loop_thread</span><span class="p">(</span><span class="nb">object</span><span class="p">):</span> <span class="c1"># NOSONAR</span>
<span class="sd">&quot;&quot;&quot;Run a function on mouse information that is received by the window, in the main loop.&quot;&quot;&quot;</span>
<span class="k">def</span> <span class="nf">__init__</span><span class="p">(</span><span class="bp">self</span><span class="p">,</span> <span class="n">f</span><span class="p">,</span> <span class="n">run_when_no_events</span><span class="o">=</span><span class="kc">False</span><span class="p">,</span> <span class="n">fps</span><span class="o">=</span><span class="mi">60</span><span class="p">):</span>
<span class="bp">self</span><span class="o">.</span><span class="n">f</span> <span class="o">=</span> <span class="n">f</span>
<span class="bp">self</span><span class="o">.</span><span class="n">sub_mouse</span> <span class="o">=</span> <span class="n">window_commands</span><span class="o">.</span><span class="n">mouse_pub</span><span class="o">.</span><span class="n">make_sub</span><span class="p">()</span>
<span class="bp">self</span><span class="o">.</span><span class="n">sub_cmd</span> <span class="o">=</span> <span class="n">window_commands</span><span class="o">.</span><span class="n">win_cmd_pub</span><span class="o">.</span><span class="n">make_sub</span><span class="p">()</span>
<span class="bp">self</span><span class="o">.</span><span class="n">sub_cmd</span><span class="o">.</span><span class="n">return_on_no_data</span> <span class="o">=</span> <span class="s2">&quot;&quot;</span>
<span class="bp">self</span><span class="o">.</span><span class="n">run_when_no_events</span> <span class="o">=</span> <span class="n">run_when_no_events</span>
<span class="bp">self</span><span class="o">.</span><span class="n">fps</span> <span class="o">=</span> <span class="n">fps</span>
<span class="k">def</span> <span class="nf">__call__</span><span class="p">(</span><span class="bp">self</span><span class="p">,</span> <span class="o">*</span><span class="n">args</span><span class="p">,</span> <span class="o">**</span><span class="n">kwargs</span><span class="p">):</span>
<span class="sd">&quot;&quot;&quot;Run the function this was set up with in a loop.&quot;&quot;&quot;</span>
<span class="n">msg_cmd</span> <span class="o">=</span> <span class="s2">&quot;&quot;</span>
<span class="k">while</span> <span class="n">msg_cmd</span> <span class="o">!=</span> <span class="s2">&quot;quit&quot;</span><span class="p">:</span>
<span class="n">mouse_xyzclick</span> <span class="o">=</span> <span class="bp">self</span><span class="o">.</span><span class="n">sub_mouse</span><span class="o">.</span><span class="n">get</span><span class="p">(</span><span class="n">blocking</span><span class="o">=</span><span class="kc">True</span><span class="p">)</span> <span class="c1"># type: MouseEvent</span>
<span class="k">if</span> <span class="n">mouse_xyzclick</span> <span class="ow">is</span> <span class="ow">not</span> <span class="bp">self</span><span class="o">.</span><span class="n">sub_mouse</span><span class="o">.</span><span class="n">return_on_no_data</span><span class="p">:</span>
<span class="bp">self</span><span class="o">.</span><span class="n">f</span><span class="p">(</span><span class="n">mouse_xyzclick</span><span class="p">,</span> <span class="o">*</span><span class="n">args</span><span class="p">,</span> <span class="o">**</span><span class="n">kwargs</span><span class="p">)</span>
<span class="k">elif</span> <span class="bp">self</span><span class="o">.</span><span class="n">run_when_no_events</span><span class="p">:</span>
<span class="bp">self</span><span class="o">.</span><span class="n">f</span><span class="p">(</span><span class="kc">None</span><span class="p">,</span> <span class="o">*</span><span class="n">args</span><span class="p">,</span> <span class="o">**</span><span class="n">kwargs</span><span class="p">)</span>
<span class="n">msg_cmd</span> <span class="o">=</span> <span class="bp">self</span><span class="o">.</span><span class="n">sub_cmd</span><span class="o">.</span><span class="n">get</span><span class="p">()</span>
<span class="n">time</span><span class="o">.</span><span class="n">sleep</span><span class="p">(</span><span class="mf">1.0</span> <span class="o">/</span> <span class="bp">self</span><span class="o">.</span><span class="n">fps</span><span class="p">)</span>
<span class="n">window_commands</span><span class="o">.</span><span class="n">quit</span><span class="p">(</span><span class="n">force_all_read</span><span class="o">=</span><span class="kc">False</span><span class="p">)</span>
<div class="viewcode-block" id="mouse_loop"><a class="viewcode-back" href="../../../input/#displayarray.input.mouse_loop">[docs]</a><span class="k">class</span> <span class="nc">mouse_loop</span><span class="p">(</span><span class="nb">object</span><span class="p">):</span> <span class="c1"># NOSONAR</span>
<span class="sd">&quot;&quot;&quot;Run a function on mouse information that is received by the window, continuously in a new thread.&quot;&quot;&quot;</span>
<span class="k">def</span> <span class="nf">__init__</span><span class="p">(</span><span class="bp">self</span><span class="p">,</span> <span class="n">f</span><span class="p">,</span> <span class="n">run_when_no_events</span><span class="o">=</span><span class="kc">False</span><span class="p">):</span>
<span class="bp">self</span><span class="o">.</span><span class="n">t</span> <span class="o">=</span> <span class="n">threading</span><span class="o">.</span><span class="n">Thread</span><span class="p">(</span><span class="n">target</span><span class="o">=</span><span class="n">_mouse_loop_thread</span><span class="p">(</span><span class="n">f</span><span class="p">,</span> <span class="n">run_when_no_events</span><span class="p">))</span>
<span class="bp">self</span><span class="o">.</span><span class="n">t</span><span class="o">.</span><span class="n">start</span><span class="p">()</span>
<span class="k">def</span> <span class="nf">__call__</span><span class="p">(</span><span class="bp">self</span><span class="p">,</span> <span class="o">*</span><span class="n">args</span><span class="p">,</span> <span class="o">**</span><span class="n">kwargs</span><span class="p">):</span>
<span class="sd">&quot;&quot;&quot;Return the thread that was started with the function passed in.&quot;&quot;&quot;</span>
<span class="k">return</span> <span class="bp">self</span><span class="o">.</span><span class="n">t</span></div>
<span class="k">class</span> <span class="nc">_key_thread</span><span class="p">(</span><span class="nb">object</span><span class="p">):</span> <span class="c1"># NOSONAR</span>
<span class="sd">&quot;&quot;&quot;Run a function on mouse information that is received by the window.&quot;&quot;&quot;</span>
<span class="k">def</span> <span class="nf">__init__</span><span class="p">(</span><span class="bp">self</span><span class="p">,</span> <span class="n">f</span><span class="p">):</span>
<span class="bp">self</span><span class="o">.</span><span class="n">f</span> <span class="o">=</span> <span class="n">f</span>
<span class="bp">self</span><span class="o">.</span><span class="n">sub_key</span> <span class="o">=</span> <span class="n">window_commands</span><span class="o">.</span><span class="n">key_pub</span><span class="o">.</span><span class="n">make_sub</span><span class="p">()</span>
<span class="k">def</span> <span class="nf">__call__</span><span class="p">(</span><span class="bp">self</span><span class="p">,</span> <span class="o">*</span><span class="n">args</span><span class="p">,</span> <span class="o">**</span><span class="n">kwargs</span><span class="p">):</span>
<span class="sd">&quot;&quot;&quot;Call the function this was set up with.&quot;&quot;&quot;</span>
<span class="bp">self</span><span class="o">.</span><span class="n">f</span><span class="p">(</span><span class="bp">self</span><span class="o">.</span><span class="n">sub_key</span><span class="p">,</span> <span class="o">*</span><span class="n">args</span><span class="p">,</span> <span class="o">**</span><span class="n">kwargs</span><span class="p">)</span>
<span class="k">class</span> <span class="nc">_key_loop_thread</span><span class="p">(</span><span class="nb">object</span><span class="p">):</span> <span class="c1"># NOSONAR</span>
<span class="sd">&quot;&quot;&quot;Run a function on mouse information that is received by the window, in the main loop.&quot;&quot;&quot;</span>
<span class="k">def</span> <span class="nf">__init__</span><span class="p">(</span><span class="bp">self</span><span class="p">,</span> <span class="n">f</span><span class="p">,</span> <span class="n">run_when_no_events</span><span class="o">=</span><span class="kc">False</span><span class="p">,</span> <span class="n">fps</span><span class="o">=</span><span class="mi">60</span><span class="p">):</span>
<span class="bp">self</span><span class="o">.</span><span class="n">f</span> <span class="o">=</span> <span class="n">f</span>
<span class="bp">self</span><span class="o">.</span><span class="n">sub_key</span> <span class="o">=</span> <span class="n">window_commands</span><span class="o">.</span><span class="n">key_pub</span><span class="o">.</span><span class="n">make_sub</span><span class="p">()</span>
<span class="bp">self</span><span class="o">.</span><span class="n">sub_cmd</span> <span class="o">=</span> <span class="n">window_commands</span><span class="o">.</span><span class="n">win_cmd_pub</span><span class="o">.</span><span class="n">make_sub</span><span class="p">()</span>
<span class="bp">self</span><span class="o">.</span><span class="n">sub_cmd</span><span class="o">.</span><span class="n">return_on_no_data</span> <span class="o">=</span> <span class="s2">&quot;&quot;</span>
<span class="bp">self</span><span class="o">.</span><span class="n">run_when_no_events</span> <span class="o">=</span> <span class="n">run_when_no_events</span>
<span class="bp">self</span><span class="o">.</span><span class="n">fps</span> <span class="o">=</span> <span class="n">fps</span>
<span class="k">def</span> <span class="nf">__call__</span><span class="p">(</span><span class="bp">self</span><span class="p">,</span> <span class="o">*</span><span class="n">args</span><span class="p">,</span> <span class="o">**</span><span class="n">kwargs</span><span class="p">):</span>
<span class="sd">&quot;&quot;&quot;Run the function this was set up with in a loop.&quot;&quot;&quot;</span>
<span class="n">msg_cmd</span> <span class="o">=</span> <span class="s2">&quot;&quot;</span>
<span class="k">while</span> <span class="n">msg_cmd</span> <span class="o">!=</span> <span class="s2">&quot;quit&quot;</span><span class="p">:</span>
<span class="n">key_chr</span> <span class="o">=</span> <span class="bp">self</span><span class="o">.</span><span class="n">sub_key</span><span class="o">.</span><span class="n">get</span><span class="p">()</span> <span class="c1"># type: chr</span>
<span class="k">if</span> <span class="n">key_chr</span> <span class="ow">is</span> <span class="ow">not</span> <span class="bp">self</span><span class="o">.</span><span class="n">sub_key</span><span class="o">.</span><span class="n">return_on_no_data</span><span class="p">:</span>
<span class="bp">self</span><span class="o">.</span><span class="n">f</span><span class="p">(</span><span class="n">key_chr</span><span class="p">,</span> <span class="o">*</span><span class="n">args</span><span class="p">,</span> <span class="o">**</span><span class="n">kwargs</span><span class="p">)</span>
<span class="k">elif</span> <span class="bp">self</span><span class="o">.</span><span class="n">run_when_no_events</span><span class="p">:</span>
<span class="bp">self</span><span class="o">.</span><span class="n">f</span><span class="p">(</span><span class="kc">None</span><span class="p">,</span> <span class="o">*</span><span class="n">args</span><span class="p">,</span> <span class="o">**</span><span class="n">kwargs</span><span class="p">)</span>
<span class="n">msg_cmd</span> <span class="o">=</span> <span class="bp">self</span><span class="o">.</span><span class="n">sub_cmd</span><span class="o">.</span><span class="n">get</span><span class="p">()</span>
<span class="n">time</span><span class="o">.</span><span class="n">sleep</span><span class="p">(</span><span class="mf">1.0</span> <span class="o">/</span> <span class="bp">self</span><span class="o">.</span><span class="n">fps</span><span class="p">)</span>
<span class="n">window_commands</span><span class="o">.</span><span class="n">quit</span><span class="p">(</span><span class="n">force_all_read</span><span class="o">=</span><span class="kc">False</span><span class="p">)</span>
<div class="viewcode-block" id="key_loop"><a class="viewcode-back" href="../../../input/#displayarray.input.key_loop">[docs]</a><span class="k">class</span> <span class="nc">key_loop</span><span class="p">(</span><span class="nb">object</span><span class="p">):</span> <span class="c1"># NOSONAR</span>
<span class="sd">&quot;&quot;&quot;Run a function on mouse information that is received by the window, continuously in a new thread.&quot;&quot;&quot;</span>
<span class="k">def</span> <span class="nf">__init__</span><span class="p">(</span><span class="bp">self</span><span class="p">,</span> <span class="n">f</span><span class="p">:</span> <span class="n">Callable</span><span class="p">[[</span><span class="nb">str</span><span class="p">],</span> <span class="kc">None</span><span class="p">],</span> <span class="n">run_when_no_events</span><span class="o">=</span><span class="kc">False</span><span class="p">):</span>
<span class="bp">self</span><span class="o">.</span><span class="n">t</span> <span class="o">=</span> <span class="n">threading</span><span class="o">.</span><span class="n">Thread</span><span class="p">(</span><span class="n">target</span><span class="o">=</span><span class="n">_key_loop_thread</span><span class="p">(</span><span class="n">f</span><span class="p">,</span> <span class="n">run_when_no_events</span><span class="p">))</span>
<span class="bp">self</span><span class="o">.</span><span class="n">t</span><span class="o">.</span><span class="n">start</span><span class="p">()</span>
<span class="k">def</span> <span class="nf">__call__</span><span class="p">(</span><span class="bp">self</span><span class="p">,</span> <span class="o">*</span><span class="n">args</span><span class="p">,</span> <span class="o">**</span><span class="n">kwargs</span><span class="p">):</span>
<span class="sd">&quot;&quot;&quot;Return the thread that was started with the function passed in.&quot;&quot;&quot;</span>
<span class="k">return</span> <span class="bp">self</span><span class="o">.</span><span class="n">t</span></div>
</pre></div>
</div>
</div>
</div>
<div class="sphinxsidebar" role="navigation" aria-label="main navigation">
<div class="sphinxsidebarwrapper">
<h1 class="logo"><a href="../../../">DisplayArray</a></h1>
<h3>Navigation</h3>
<p class="caption"><span class="caption-text">Python API</span></p>
<ul>
<li class="toctree-l1"><a class="reference internal" href="../../../displayarray/">displayarray</a></li>
<li class="toctree-l1"><a class="reference internal" href="../../../crop/">displayarray.effects.crop</a></li>
<li class="toctree-l1"><a class="reference internal" href="../../../lens/">displayarray.effects.lens</a></li>
<li class="toctree-l1"><a class="reference internal" href="../../../select_channels/">displayarray.effects.select_channels</a></li>
<li class="toctree-l1"><a class="reference internal" href="../../../frame/">displayarray.frame</a></li>
<li class="toctree-l1"><a class="reference internal" href="../../../window/">displayarray.window</a></li>
<li class="toctree-l1"><a class="reference internal" href="../../../input/">displayarray.input</a></li>
</ul>
<p class="caption"><span class="caption-text">Bash API</span></p>
<ul>
<li class="toctree-l1"><a class="reference internal" href="../../../displayarray_bash/">displayarray</a></li>
</ul>
<div class="relations">
<h3>Related Topics</h3>
<ul>
<li><a href="../../../">Documentation overview</a><ul>
<li><a href="../../">Module code</a><ul>
</ul></li>
</ul></li>
</ul>
</div>
<div id="searchbox" style="display: none" role="search">
<h3 id="searchlabel">Quick search</h3>
<div class="searchformwrapper">
<form class="search" action="../../../search/" method="get">
<input type="text" name="q" aria-labelledby="searchlabel" />
<input type="submit" value="Go" />
</form>
</div>
</div>
<script type="text/javascript">$('#searchbox').show(0);</script>
</div>
</div>
<div class="clearer"></div>
</div>
<div class="footer">
&copy;2019, Simulator Leek.
|
Powered by <a href="http://sphinx-doc.org/">Sphinx 2.2.1</a>
&amp; <a href="https://github.com/bitprophet/alabaster">Alabaster 0.7.12</a>
</div>
</body>
</html>
File diff suppressed because it is too large Load Diff
+118
View File
@@ -0,0 +1,118 @@
<!DOCTYPE html>
<html xmlns="http://www.w3.org/1999/xhtml">
<head>
<meta charset="utf-8" />
<title>Overview: module code &#8212; DisplayArray documentation</title>
<link rel="stylesheet" href="../_static/alabaster.css" type="text/css" />
<link rel="stylesheet" href="../_static/pygments.css" type="text/css" />
<script type="text/javascript" id="documentation_options" data-url_root="../" src="../_static/documentation_options.js"></script>
<script type="text/javascript" src="../_static/jquery.js"></script>
<script type="text/javascript" src="../_static/underscore.js"></script>
<script type="text/javascript" src="../_static/doctools.js"></script>
<script type="text/javascript" src="../_static/language_data.js"></script>
<link rel="index" title="Index" href="../genindex/" />
<link rel="search" title="Search" href="../search/" />
<link rel="stylesheet" href="../_static/custom.css" type="text/css" />
<meta name="viewport" content="width=device-width, initial-scale=0.9, maximum-scale=0.9" />
</head><body>
<div class="document">
<div class="documentwrapper">
<div class="bodywrapper">
<div class="body" role="main">
<h1>All modules for which code is available</h1>
<ul><li><a href="displayarray/effects/crop/">displayarray.effects.crop</a></li>
<li><a href="displayarray/effects/lens/">displayarray.effects.lens</a></li>
<li><a href="displayarray/effects/select_channels/">displayarray.effects.select_channels</a></li>
<li><a href="displayarray/frame/frame_publishing/">displayarray.frame.frame_publishing</a></li>
<li><a href="displayarray/frame/frame_updater/">displayarray.frame.frame_updater</a></li>
<li><a href="displayarray/frame/get_frame_ids/">displayarray.frame.get_frame_ids</a></li>
<li><a href="displayarray/frame/np_to_opencv/">displayarray.frame.np_to_opencv</a></li>
<li><a href="displayarray/input/">displayarray.input</a></li>
<li><a href="displayarray/window/subscriber_windows/">displayarray.window.subscriber_windows</a></li>
</ul>
</div>
</div>
</div>
<div class="sphinxsidebar" role="navigation" aria-label="main navigation">
<div class="sphinxsidebarwrapper">
<h1 class="logo"><a href="../">DisplayArray</a></h1>
<h3>Navigation</h3>
<p class="caption"><span class="caption-text">Python API</span></p>
<ul>
<li class="toctree-l1"><a class="reference internal" href="../displayarray/">displayarray</a></li>
<li class="toctree-l1"><a class="reference internal" href="../crop/">displayarray.effects.crop</a></li>
<li class="toctree-l1"><a class="reference internal" href="../lens/">displayarray.effects.lens</a></li>
<li class="toctree-l1"><a class="reference internal" href="../select_channels/">displayarray.effects.select_channels</a></li>
<li class="toctree-l1"><a class="reference internal" href="../frame/">displayarray.frame</a></li>
<li class="toctree-l1"><a class="reference internal" href="../window/">displayarray.window</a></li>
<li class="toctree-l1"><a class="reference internal" href="../input/">displayarray.input</a></li>
</ul>
<p class="caption"><span class="caption-text">Bash API</span></p>
<ul>
<li class="toctree-l1"><a class="reference internal" href="../displayarray_bash/">displayarray</a></li>
</ul>
<div class="relations">
<h3>Related Topics</h3>
<ul>
<li><a href="../">Documentation overview</a><ul>
</ul></li>
</ul>
</div>
<div id="searchbox" style="display: none" role="search">
<h3 id="searchlabel">Quick search</h3>
<div class="searchformwrapper">
<form class="search" action="../search/" method="get">
<input type="text" name="q" aria-labelledby="searchlabel" />
<input type="submit" value="Go" />
</form>
</div>
</div>
<script type="text/javascript">$('#searchbox').show(0);</script>
</div>
</div>
<div class="clearer"></div>
</div>
<div class="footer">
&copy;2019, Simulator Leek.
|
Powered by <a href="http://sphinx-doc.org/">Sphinx 2.2.1</a>
&amp; <a href="https://github.com/bitprophet/alabaster">Alabaster 0.7.12</a>
</div>
</body>
</html>
+7
View File
@@ -0,0 +1,7 @@
displayarray.effects.crop
===================================
.. currentmodule:: displayarray.effects.crop
.. autoclass:: Crop
:members:
+12
View File
@@ -0,0 +1,12 @@
displayarray
===================================
.. automodule:: displayarray
Display
-------
.. autofunction:: display
.. autofunction:: breakpoint_display
Frames
------
.. autofunction:: read_updates

Some files were not shown because too many files have changed in this diff Show More