diff --git a/docs/.doctrees/display.doctree b/docs/.doctrees/display.doctree
index 023d9ae..e89bb89 100644
Binary files a/docs/.doctrees/display.doctree and b/docs/.doctrees/display.doctree differ
diff --git a/docs/.doctrees/environment.pickle b/docs/.doctrees/environment.pickle
index 55e2066..9fcb3ec 100644
Binary files a/docs/.doctrees/environment.pickle and b/docs/.doctrees/environment.pickle differ
diff --git a/docs/.doctrees/frame.doctree b/docs/.doctrees/frame.doctree
index d1f789d..b14a6c3 100644
Binary files a/docs/.doctrees/frame.doctree and b/docs/.doctrees/frame.doctree differ
diff --git a/docs/_modules/displayarray/__main__/index.html b/docs/_modules/displayarray/__main__/index.html
index 0dd93d9..733665e 100644
--- a/docs/_modules/displayarray/__main__/index.html
+++ b/docs/_modules/displayarray/__main__/index.html
@@ -173,7 +173,7 @@
©2019, Simulator Leek.
|
- Powered by Sphinx 2.2.1
+ Powered by Sphinx 2.2.0
& Alabaster 0.7.12
diff --git a/docs/_modules/displayarray/effects/crop/index.html b/docs/_modules/displayarray/effects/crop/index.html
index 3a71165..3425dfb 100644
--- a/docs/_modules/displayarray/effects/crop/index.html
+++ b/docs/_modules/displayarray/effects/crop/index.html
@@ -211,7 +211,7 @@
©2019, Simulator Leek.
|
- Powered by Sphinx 2.2.1
+ Powered by Sphinx 2.2.0
& Alabaster 0.7.12
diff --git a/docs/_modules/displayarray/effects/lens/index.html b/docs/_modules/displayarray/effects/lens/index.html
index 8465230..c0a7144 100644
--- a/docs/_modules/displayarray/effects/lens/index.html
+++ b/docs/_modules/displayarray/effects/lens/index.html
@@ -404,7 +404,7 @@
©2019, Simulator Leek.
|
- Powered by Sphinx 2.2.1
+ Powered by Sphinx 2.2.0
& Alabaster 0.7.12
diff --git a/docs/_modules/displayarray/effects/select_channels/index.html b/docs/_modules/displayarray/effects/select_channels/index.html
index ed1ce40..04dbccd 100644
--- a/docs/_modules/displayarray/effects/select_channels/index.html
+++ b/docs/_modules/displayarray/effects/select_channels/index.html
@@ -177,7 +177,7 @@
©2019, Simulator Leek.
|
- Powered by Sphinx 2.2.1
+ Powered by Sphinx 2.2.0
& Alabaster 0.7.12
diff --git a/docs/_modules/displayarray/frame/frame_publishing/index.html b/docs/_modules/displayarray/frame/frame_publishing/index.html
index 5945ed5..de6487f 100644
--- a/docs/_modules/displayarray/frame/frame_publishing/index.html
+++ b/docs/_modules/displayarray/frame/frame_publishing/index.html
@@ -53,7 +53,7 @@
cam_id: Union[int, str, np.ndarray],
request_size: Tuple[int, int] = (-1, -1),
high_speed: bool = True,
- fps_limit: float = 240,
+ fps_limit: float = float("inf"),
) -> bool:
"""
Publish whichever camera you select to CVCams.<cam_id>.Vid.
@@ -80,7 +80,6 @@
subscriber_dictionary.register_cam(name)
- # cam.set(cv2.CAP_PROP_CONVERT_RGB, 0)
frame_counter = 0
sub = subscriber_dictionary.cam_cmd_sub(name)
@@ -122,7 +121,7 @@
cam_id: Union[int, str],
request_ize: Tuple[int, int] = (-1, -1),
high_speed: bool = True,
- fps_limit: float = 240,
+ fps_limit: float = float("inf"),
) -> threading.Thread:
"""Run pub_cam_loop in a new thread. Starts on creation."""
t = threading.Thread(
@@ -219,8 +218,8 @@
}[dtype]
else:
msg_type = (
- dtype
- ) # allow users to use their own custom messages in numpy arrays
+ dtype # allow users to use their own custom messages in numpy arrays
+ )
return msg_type
publishers: Dict[str, rospy.Publisher] = {}
@@ -316,7 +315,7 @@
©2019, Simulator Leek.
|
- Powered by Sphinx 2.2.1
+ Powered by Sphinx 2.2.0
& Alabaster 0.7.12
diff --git a/docs/_modules/displayarray/frame/frame_updater/index.html b/docs/_modules/displayarray/frame/frame_updater/index.html
index 34940d7..42002dd 100644
--- a/docs/_modules/displayarray/frame/frame_updater/index.html
+++ b/docs/_modules/displayarray/frame/frame_updater/index.html
@@ -50,7 +50,7 @@
FrameCallable = Callable[[np.ndarray], Optional[np.ndarray]]
-
[docs]class FrameUpdater(threading.Thread):
+
[docs]class FrameUpdater(threading.Thread):
"""Thread for updating frames from a video source."""
def __init__(
@@ -59,7 +59,7 @@
callbacks: Optional[Union[List[FrameCallable], FrameCallable]] = None,
request_size: Tuple[int, int] = (-1, -1),
high_speed: bool = True,
-
fps_limit: float = 240,
+
fps_limit: float = float("inf"),
):
"""Create the frame updater thread."""
super(FrameUpdater, self).__init__(target=self.loop, args=())
@@ -110,7 +110,7 @@
raise e
global_cv_display_callback(frame, self.cam_id)
-
[docs] def loop(self):
+
[docs] def loop(self):
"""Continually get frames from the video publisher, run callbacks on them, and listen to commands."""
t = pub_cam_thread(
self.video_source, self.request_size, self.high_speed, self.fps_limit
@@ -129,7 +129,7 @@
subscriber_dictionary.stop_cam(self.cam_id)
t.join()
-
[docs] def display(self, callbacks: List[Callable[[np.ndarray], Any]] = None):
+
[docs] def display(self, callbacks: List[Callable[[np.ndarray], Any]] = None):
"""
Start default display operation.
@@ -148,66 +148,66 @@
raise self.exception_raised
-
[docs]async def read_updates(
-
*vids,
-
callbacks: Optional[
-
Union[
-
Dict[Any, Union[FrameCallable, List[FrameCallable]]],
-
List[FrameCallable],
-
FrameCallable,
-
]
-
] = None,
-
fps_limit=float("inf"),
-
size=(-1, -1),
-
end_callback: Callable[[], bool] = lambda: False,
-
blocking=True,
-
):
-
"""
+
'''async def read_updates(
+
*vids,
+
callbacks: Optional[
+
Union[
+
Dict[Any, Union[FrameCallable, List[FrameCallable]]],
+
List[FrameCallable],
+
FrameCallable,
+
]
+
] = None,
+
fps_limit=float("inf"),
+
size=(-1, -1),
+
end_callback: Callable[[], bool] = lambda: False,
+
blocking=True,
+
):
+
"""
Read back all updates from the requested videos.
-
Example usage:
+
Examp#le usage:
-
.. code-block:: python
+
.. co#de-block:: python
-
>>> from examples.videos import test_video
-
>>> f = 0
-
>>> for f, r in enumerate(read_updates(test_video, end_callback=lambda :f==2)):
-
... print(f"Frame:{f}. Array:{r}")
+
>>#> from examples.videos import test_video
+
>>#> f = 0
+
>>#> for f, r in enumerate(read_updates(test_video, end_callback=lambda :f==2)):
+
..#. print(f"Frame:{f}. Array:{r}")
"""
-
from displayarray.window import SubscriberWindows
-
from displayarray.window.subscriber_windows import _get_video_threads
+
from displayarray.window import SubscriberWindows
+
from displayarray.window.subscriber_windows import _get_video_threads
-
vid_names = [uid_for_source(name) for name in vids]
-
vid_threads = _get_video_threads(
-
*vids, callbacks=callbacks, fps=fps_limit, size=size
-
)
-
for v in vid_threads:
-
v.start()
+
vid_names = [uid_for_source(name) for name in vids]
+
vid_threads = _get_video_threads(
+
*vids, callbacks=callbacks, fps=fps_limit, size=size
+
)
+
for v in vid_threads:
+
v.start()
-
while not end_callback():
-
vid_update_dict = {}
-
dict_was_updated = False
-
for i in range(len(vid_names)):
-
if vid_names[i] in SubscriberWindows.FRAME_DICT and not isinstance(
-
SubscriberWindows.FRAME_DICT[vid_names[i]], NoData
-
):
-
vid_update_dict[vid_names[i]] = SubscriberWindows.FRAME_DICT[
-
vid_names[i]
-
]
-
if (
-
isinstance(vid_update_dict[vid_names[i]], np.ndarray)
-
and len(vid_update_dict[vid_names[i]].shape) <= 3
-
):
-
vid_update_dict[vid_names[i]] = [vid_update_dict[vid_names[i]]]
-
dict_was_updated = True
-
if dict_was_updated or not blocking:
-
yield vid_update_dict
-
await asyncio.sleep(0)
-
for v in vid_names:
-
subscriber_dictionary.stop_cam(v)
-
for v in vid_threads:
-
v.join()
+
while not end_callback():
+
vid_update_dict = {}
+
dict_was_updated = False
+
for i in range(len(vid_names)):
+
if vid_names[i] in SubscriberWindows.FRAME_DICT and not isinstance(
+
SubscriberWindows.FRAME_DICT[vid_names[i]], NoData
+
):
+
vid_update_dict[vid_names[i]] = SubscriberWindows.FRAME_DICT[
+
vid_names[i]
+
]
+
if (
+
isinstance(vid_update_dict[vid_names[i]], np.ndarray)
+
and len(vid_update_dict[vid_names[i]].shape) <= 3
+
):
+
vid_update_dict[vid_names[i]] = [vid_update_dict[vid_names[i]]]
+
dict_was_updated = True
+
if dict_was_updated or not blocking:
+
yield vid_update_dict
+
await asyncio.sleep(0)
+
for v in vid_names:
+
subscriber_dictionary.stop_cam(v)
+
for v in vid_threads:
+
v.join()'''
async def read_updates_zero_mq(
@@ -404,7 +404,7 @@
©2019, Simulator Leek.
|
- Powered by
Sphinx 2.2.1
+ Powered by
Sphinx 2.2.0
&
Alabaster 0.7.12
diff --git a/docs/_modules/displayarray/frame/get_frame_ids/index.html b/docs/_modules/displayarray/frame/get_frame_ids/index.html
index 88c03ca..1cb8c25 100644
--- a/docs/_modules/displayarray/frame/get_frame_ids/index.html
+++ b/docs/_modules/displayarray/frame/get_frame_ids/index.html
@@ -114,7 +114,7 @@
©2019, Simulator Leek.
|
- Powered by
Sphinx 2.2.1
+ Powered by
Sphinx 2.2.0
&
Alabaster 0.7.12
diff --git a/docs/_modules/displayarray/frame/np_to_opencv/index.html b/docs/_modules/displayarray/frame/np_to_opencv/index.html
index 3ad2aea..cda2e37 100644
--- a/docs/_modules/displayarray/frame/np_to_opencv/index.html
+++ b/docs/_modules/displayarray/frame/np_to_opencv/index.html
@@ -158,7 +158,7 @@
©2019, Simulator Leek.
|
- Powered by
Sphinx 2.2.1
+ Powered by
Sphinx 2.2.0
&
Alabaster 0.7.12
diff --git a/docs/_modules/displayarray/input/index.html b/docs/_modules/displayarray/input/index.html
index c6529da..fbb83ea 100644
--- a/docs/_modules/displayarray/input/index.html
+++ b/docs/_modules/displayarray/input/index.html
@@ -241,7 +241,7 @@
©2019, Simulator Leek.
|
- Powered by Sphinx 2.2.1
+ Powered by Sphinx 2.2.0
& Alabaster 0.7.12
diff --git a/docs/_modules/displayarray/window/subscriber_windows/index.html b/docs/_modules/displayarray/window/subscriber_windows/index.html
index 8e5f4a9..a54df67 100644
--- a/docs/_modules/displayarray/window/subscriber_windows/index.html
+++ b/docs/_modules/displayarray/window/subscriber_windows/index.html
@@ -63,6 +63,7 @@
window_names: Iterable[str] = ("displayarray",),
video_sources: Iterable[Union[str, int]] = (0,),
callbacks: Optional[List[Callable[[np.ndarray], Any]]] = None,
+ silent: bool = False,
):
"""Create the array displaying window."""
self.source_names: List[Union[str, int]] = []
@@ -72,14 +73,16 @@
self.window_names: List[str] = []
self.input_cams: List[str] = []
self.exited = False
+ self.silent = silent
if callbacks is None:
callbacks = []
for name in video_sources:
self.add_source(name)
self.callbacks = callbacks
- for name in window_names:
- self.add_window(name)
+ if not self.silent:
+ for name in window_names:
+ self.add_window(name)
self.update()
@@ -87,6 +90,11 @@
self.update()
return not self.exited
+ def __iter__(self):
+ while not self.exited:
+ self.update()
+ yield self.frames
+
[docs] def block(self):
"""Update the window continuously while blocking the outer program."""
self.loop()
@@ -142,7 +150,7 @@
mousey = MouseEvent(event, x, y, flags, param)
window_commands.mouse_pub.publish(mousey)
- def _display_frames(self, frames, win_num=0, ids=None):
+ def display_frames(self, frames, win_num=0, ids=None):
if isinstance(frames, Exception):
raise frames
for f in range(len(frames)):
@@ -155,7 +163,7 @@
and (len(frames[f].shape) != 3 or frames[f].shape[-1] != 3)
)
):
- win_num = self._display_frames(frames[f], win_num, ids)
+ win_num = self.display_frames(frames[f], win_num, ids)
else:
if len(self.window_names) <= win_num:
self.add_window(str(win_num))
@@ -190,7 +198,7 @@
self.frames[fr] = self.callbacks[-1](self.frames[fr])
break
-[docs] def update_window_frames(self):
+
[docs] def update_frames(self):
"""Update the windows with the newest data for all frames."""
self.frames = []
for i in range(len(self.input_vid_global_names)):
@@ -205,9 +213,11 @@
frame = c(self.frames[-1])
if frame is not None:
self.frames[-1] = frame
-
self.__check_too_many_channels()
+
if not self.silent:
+
self.__check_too_many_channels()
self.FRAME_DICT[self.input_vid_global_names[i]] = NoData()
-
self._display_frames(self.frames)
+
if not self.silent:
+
self.display_frames(self.frames)
[docs] def update(self, arr: np.ndarray = None, id: str = None):
"""Update window frames once. Optionally add a new input and input id."""
@@ -215,9 +225,10 @@
global_cv_display_callback(arr, id)
if id not in self.input_cams:
self.add_source(id)
-
self.add_window(id)
+
if not self.silent:
+
self.add_window(id)
sub_cmd = window_commands.win_cmd_sub()
-
self.update_window_frames()
+
self.update_frames()
msg_cmd = sub_cmd.get()
key = self.handle_keys(cv2.waitKey(1))
return msg_cmd, key
@@ -264,7 +275,7 @@
def _get_video_callback_dict_threads(
*vids,
callbacks: Optional[Dict[Any, Union[FrameCallable, List[FrameCallable]]]] = None,
- fps=240,
+ fps=float("inf"),
size=(-1, -1),
):
assert callbacks is not None
@@ -297,7 +308,7 @@
FrameCallable,
]
] = None,
- fps=240,
+ fps=float("inf"),
size=(-1, -1),
):
vid_threads: List[Thread] = []
@@ -333,8 +344,9 @@
] = None,
window_names=None,
blocking=False,
- fps_limit=240,
+ fps_limit=float("inf"),
size=(-1, -1),
+ silent=False,
):
"""
Display all the arrays, cameras, and videos passed in.
@@ -351,11 +363,15 @@
if window_names is None:
window_names = ["window {}".format(i) for i in range(len(vids))]
if blocking:
- SubscriberWindows(window_names=window_names, video_sources=vids).loop()
+ SubscriberWindows(
+ window_names=window_names, video_sources=vids, silent=silent
+ ).loop()
for vt in vid_threads:
vt.join()
else:
- s = SubscriberWindows(window_names=window_names, video_sources=vids)
+ s = SubscriberWindows(
+ window_names=window_names, video_sources=vids, silent=silent
+ )
s.close_threads = vid_threads
return s
@@ -363,6 +379,11 @@
[docs]def breakpoint_display(*args, **kwargs):
"""Display all the arrays, cameras, and videos passed in. Stops code execution until the window is closed."""
return display(*args, **kwargs, blocking=True)
+
+
+[docs]def read_updates(*args, **kwargs):
+
"""Read back all frame updates and yield a list of frames. List is empty if no frames were read."""
+
return display(*args, **kwargs, silent=True)
@@ -428,7 +449,7 @@
©2019, Simulator Leek.
|
- Powered by Sphinx 2.2.1
+ Powered by Sphinx 2.2.0
& Alabaster 0.7.12
diff --git a/docs/_modules/index.html b/docs/_modules/index.html
index bfd20e6..5e36bb3 100644
--- a/docs/_modules/index.html
+++ b/docs/_modules/index.html
@@ -104,7 +104,7 @@
©2019, Simulator Leek.
|
- Powered by Sphinx 2.2.1
+ Powered by Sphinx 2.2.0
& Alabaster 0.7.12
diff --git a/docs/_sources/display.rst.txt b/docs/_sources/display.rst.txt
index 1a324d2..e9e6103 100644
--- a/docs/_sources/display.rst.txt
+++ b/docs/_sources/display.rst.txt
@@ -4,6 +4,7 @@ displayarray.display
.. autofunction:: display
.. autofunction:: breakpoint_display
+.. autofunction:: read_updates
Windows
-------
diff --git a/docs/_sources/frame.rst.txt b/docs/_sources/frame.rst.txt
index 8d8412f..294629a 100644
--- a/docs/_sources/frame.rst.txt
+++ b/docs/_sources/frame.rst.txt
@@ -1,12 +1,6 @@
displayarray.frame
===================================
-Read Updates
-------------
-.. currentmodule:: displayarray
-
-.. autofunction:: read_updates
-
Frame Passing
-------------
.. currentmodule:: displayarray.frame
@@ -19,7 +13,6 @@ Frame Passing
.. autoclass:: FrameUpdater
:members:
-.. autofunction:: read_updates
.. autofunction:: get_cam_ids
.. autoclass:: NpCam
diff --git a/docs/display/index.html b/docs/display/index.html
index 1cc6500..46602e3 100644
--- a/docs/display/index.html
+++ b/docs/display/index.html
@@ -38,7 +38,7 @@
display is a function that displays these in their own windows.
-
-
display
(*vids, callbacks: Union[Dict[Any, Union[Callable[[numpy.ndarray], Optional[numpy.ndarray]], List[Callable[[numpy.ndarray], Optional[numpy.ndarray]]]]], List[Callable[[numpy.ndarray], Optional[numpy.ndarray]]], Callable[[numpy.ndarray], Optional[numpy.ndarray]], None] = None, window_names=None, blocking=False, fps_limit=240, size=(-1, -1))[source]
+display
(*vids, callbacks: Union[Dict[Any, Union[Callable[[numpy.ndarray], Optional[numpy.ndarray]], List[Callable[[numpy.ndarray], Optional[numpy.ndarray]]]]], List[Callable[[numpy.ndarray], Optional[numpy.ndarray]]], Callable[[numpy.ndarray], Optional[numpy.ndarray]], None] = None, window_names=None, blocking=False, fps_limit=inf, size=(-1, -1), silent=False)[source]
Display all the arrays, cameras, and videos passed in.
- callbacks can be a dictionary linking functions to videos, or a list of function or functions operating on the video
data before displaying.
@@ -53,11 +53,17 @@
Display all the arrays, cameras, and videos passed in. Stops code execution until the window is closed.
+
+-
+
read_updates
(*args, **kwargs)[source]
+Read back all frame updates and yield a list of frames. List is empty if no frames were read.
+
+
Windows
-
-class
SubscriberWindows
(window_names: Iterable[str] = ('displayarray',), video_sources: Iterable[Union[str, int]] = (0,), callbacks: Optional[List[Callable[[numpy.ndarray], Any]]] = None)[source]
+class SubscriberWindows
(window_names: Iterable[str] = ('displayarray',), video_sources: Iterable[Union[str, int]] = (0,), callbacks: Optional[List[Callable[[numpy.ndarray], Any]]] = None, silent: bool = False)[source]
Windows that subscribe to updates to cameras, videos, and arrays.
-
@@ -114,8 +120,8 @@
--
-
update_window_frames
()[source]
+-
+
update_frames
()[source]
Update the windows with the newest data for all frames.
@@ -197,7 +203,7 @@
©2019, Simulator Leek.
|
- Powered by
Sphinx 2.2.1
+ Powered by
Sphinx 2.2.0
&
Alabaster 0.7.12
|
diff --git a/docs/docsrc/frame.rst b/docs/docsrc/frame.rst
index 744222a..294629a 100644
--- a/docs/docsrc/frame.rst
+++ b/docs/docsrc/frame.rst
@@ -13,7 +13,6 @@ Frame Passing
.. autoclass:: FrameUpdater
:members:
-.. autofunction:: read_updates
.. autofunction:: get_cam_ids
.. autoclass:: NpCam
diff --git a/docs/effects/index.html b/docs/effects/index.html
index 9ba7bb3..fb18c18 100644
--- a/docs/effects/index.html
+++ b/docs/effects/index.html
@@ -273,7 +273,7 @@ Ctrl+scroll to increase/decrease channel 0.
©2019, Simulator Leek.
|
- Powered by
Sphinx 2.2.1
+ Powered by
Sphinx 2.2.0
&
Alabaster 0.7.12
|
diff --git a/docs/frame/index.html b/docs/frame/index.html
index ea9a7b7..80cd0c3 100644
--- a/docs/frame/index.html
+++ b/docs/frame/index.html
@@ -34,22 +34,6 @@
displayarray.frame
-
-
Read Updates
-
--
-
read_updates
(*vids, callbacks: Union[Dict[Any, Union[Callable[[numpy.ndarray], Optional[numpy.ndarray]], List[Callable[[numpy.ndarray], Optional[numpy.ndarray]]]]], List[Callable[[numpy.ndarray], Optional[numpy.ndarray]]], Callable[[numpy.ndarray], Optional[numpy.ndarray]], None] = None, fps_limit=inf, size=(-1, -1), end_callback: Callable[[], bool] = <function <lambda>>, blocking=True)[source]
-Read back all updates from the requested videos.
-Example usage:
->>> from examples.videos import test_video
->>> f = 0
->>> for f, r in enumerate(read_updates(test_video, end_callback=lambda :f==2)):
-... print(f"Frame:{f}. Array:{r}")
-
-
-
-
-
Frame Passing
Handles publishing arrays, videos, and cameras.
@@ -60,7 +44,7 @@ pub_cam_thread continually publishes updates to arrays, videos, and cameras
np_cam simulates numpy arrays as OpenCV cameras
-
-class
FrameUpdater
(video_source: Union[int, str, numpy.ndarray] = 0, callbacks: Union[List[Callable[[numpy.ndarray], Optional[numpy.ndarray]]], Callable[[numpy.ndarray], Optional[numpy.ndarray]], None] = None, request_size: Tuple[int, int] = (-1, -1), high_speed: bool = True, fps_limit: float = 240)[source]
+class FrameUpdater
(video_source: Union[int, str, numpy.ndarray] = 0, callbacks: Union[List[Callable[[numpy.ndarray], Optional[numpy.ndarray]]], Callable[[numpy.ndarray], Optional[numpy.ndarray]], None] = None, request_size: Tuple[int, int] = (-1, -1), high_speed: bool = True, fps_limit: float = inf)[source]
Thread for updating frames from a video source.
-
@@ -82,19 +66,6 @@ np_cam simulates numpy arrays as OpenCV cameras
-
--
-
read_updates
(*vids, callbacks: Union[Dict[Any, Union[Callable[[numpy.ndarray], Optional[numpy.ndarray]], List[Callable[[numpy.ndarray], Optional[numpy.ndarray]]]]], List[Callable[[numpy.ndarray], Optional[numpy.ndarray]]], Callable[[numpy.ndarray], Optional[numpy.ndarray]], None] = None, fps_limit=inf, size=(-1, -1), end_callback: Callable[[], bool] = <function <lambda>>, blocking=True)[source]
-Read back all updates from the requested videos.
-Example usage:
->>> from examples.videos import test_video
->>> f = 0
->>> for f, r in enumerate(read_updates(test_video, end_callback=lambda :f==2)):
-... print(f"Frame:{f}. Array:{r}")
-
-
-
-
-
get_cam_ids
() → List[int][source]
@@ -139,7 +110,7 @@ np_cam simulates numpy arrays as OpenCV cameras
-
-
pub_cam_thread
(cam_id: Union[int, str], request_ize: Tuple[int, int] = (-1, -1), high_speed: bool = True, fps_limit: float = 240) → threading.Thread[source]
+pub_cam_thread
(cam_id: Union[int, str], request_ize: Tuple[int, int] = (-1, -1), high_speed: bool = True, fps_limit: float = inf) → threading.Thread[source]
Run pub_cam_loop in a new thread. Starts on creation.
@@ -167,7 +138,6 @@ np_cam simulates numpy arrays as OpenCV cameras
- display
- frame
@@ -214,7 +184,7 @@ np_cam simulates numpy arrays as OpenCV cameras
©2019, Simulator Leek.
|
- Powered by Sphinx 2.2.1
+ Powered by Sphinx 2.2.0
& Alabaster 0.7.12
|
diff --git a/docs/genindex/index.html b/docs/genindex/index.html
index 288e791..558c466 100644
--- a/docs/genindex/index.html
+++ b/docs/genindex/index.html
@@ -254,12 +254,8 @@
|
|
|
@@ -374,7 +370,7 @@
©2019, Simulator Leek.
|
- Powered by Sphinx 2.2.1
+ Powered by Sphinx 2.2.0
& Alabaster 0.7.12
diff --git a/docs/index.html b/docs/index.html
index ca458ae..6de11e9 100644
--- a/docs/index.html
+++ b/docs/index.html
@@ -50,7 +50,6 @@ contain the root
toctree directive.
- frame
@@ -146,7 +145,7 @@ contain the root
toctree directive.
©2019, Simulator Leek.
|
- Powered by
Sphinx 2.2.1
+ Powered by
Sphinx 2.2.0
&
Alabaster 0.7.12
|
diff --git a/docs/input/index.html b/docs/input/index.html
index 3cc152c..2d61eca 100644
--- a/docs/input/index.html
+++ b/docs/input/index.html
@@ -138,7 +138,7 @@
©2019, Simulator Leek.
|
- Powered by
Sphinx 2.2.1
+ Powered by
Sphinx 2.2.0
&
Alabaster 0.7.12
|
diff --git a/docs/objects.inv b/docs/objects.inv
index d06227a..0ae0e49 100644
Binary files a/docs/objects.inv and b/docs/objects.inv differ
diff --git a/docs/py-modindex/index.html b/docs/py-modindex/index.html
index 5c1fbdc..e0fa4d0 100644
--- a/docs/py-modindex/index.html
+++ b/docs/py-modindex/index.html
@@ -129,7 +129,7 @@
©2019, Simulator Leek.
|
- Powered by
Sphinx 2.2.1
+ Powered by
Sphinx 2.2.0
&
Alabaster 0.7.12
diff --git a/docs/search/index.html b/docs/search/index.html
index 2c9735c..7c58908 100644
--- a/docs/search/index.html
+++ b/docs/search/index.html
@@ -110,7 +110,7 @@
©2019, Simulator Leek.
|
- Powered by
Sphinx 2.2.1
+ Powered by
Sphinx 2.2.0
&
Alabaster 0.7.12
diff --git a/docs/searchindex.js b/docs/searchindex.js
index edd8c42..e3b2582 100644
--- a/docs/searchindex.js
+++ b/docs/searchindex.js
@@ -1 +1 @@
-Search.setIndex({docnames:["display","displayarray_bash","effects","frame","index","input"],envversion:{"sphinx.domains.c":1,"sphinx.domains.changeset":1,"sphinx.domains.citation":1,"sphinx.domains.cpp":1,"sphinx.domains.javascript":1,"sphinx.domains.math":2,"sphinx.domains.python":1,"sphinx.domains.rst":1,"sphinx.domains.std":1,"sphinx.ext.todo":2,"sphinx.ext.viewcode":1,sphinx:56},filenames:["display.rst","displayarray_bash.rst","effects.rst","frame.rst","index.rst","input.rst"],objects:{"":{displayarray:[0,0,0,"-"]},"displayarray.__main__":{main:[1,1,1,""]},"displayarray.effects":{lens:[2,0,0,"-"]},"displayarray.effects.crop":{Crop:[2,2,1,""]},"displayarray.effects.crop.Crop":{center:[2,3,1,""],enable_mouse_control:[2,3,1,""],output_size:[2,3,1,""]},"displayarray.effects.lens":{Barrel:[2,2,1,""],BarrelPyTorch:[2,2,1,""],ControllableLens:[2,2,1,""],Mustache:[2,2,1,""]},"displayarray.effects.lens.Barrel":{barrel_power:[2,3,1,""],center:[2,3,1,""],enable_mouse_control:[2,3,1,""],zoom:[2,3,1,""]},"displayarray.effects.lens.ControllableLens":{run_bleed:[2,3,1,""]},"displayarray.effects.lens.Mustache":{enable_mouse_control:[2,3,1,""]},"displayarray.effects.select_channels":{SelectChannels:[2,2,1,""]},"displayarray.effects.select_channels.SelectChannels":{enable_mouse_control:[2,3,1,""]},"displayarray.frame":{FrameUpdater:[3,2,1,""],NpCam:[3,2,1,""],get_cam_ids:[3,1,1,""],pub_cam_thread:[3,1,1,""],read_updates:[3,1,1,""]},"displayarray.frame.FrameUpdater":{display:[3,3,1,""],loop:[3,3,1,""]},"displayarray.frame.NpCam":{get:[3,3,1,""],isOpened:[3,3,1,""],read:[3,3,1,""],release:[3,3,1,""],set:[3,3,1,""]},"displayarray.input":{MouseEvent:[5,2,1,""],key_loop:[5,2,1,""],mouse_loop:[5,2,1,""]},"displayarray.window":{SubscriberWindows:[0,2,1,""]},"displayarray.window.SubscriberWindows":{add_callback:[0,3,1,""],add_source:[0,3,1,""],add_window:[0,3,1,""],block:[0,3,1,""],end:[0,3,1,""],handle_keys:[0,3,1,""],handle_mouse:[0,3,1,""],loop:[0,3,1,""],update:[0,3,1,""],update_window_frames:[0,3,1,""],wait_for_init:[0,3,1,""]},displayarray:{__main__:[1,0,0,"-"],breakpoint_display:[0,1,1,""],display:[0,1,1,""],frame:[3,0,0,"-"],read_updates:[3,1,1,""]}},objnames:{"0":["py","module","Python module"],"1":["py","function","Python function"],"2":["py","class","Python class"],"3":["py","method","Python method"]},objtypes:{"0":"py:module","1":"py:function","2":"py:class","3":"py:method"},terms:{"class":[0,2,3,5],"default":[1,2,3],"float":3,"function":[0,3,5],"import":3,"int":[0,2,3],"new":[0,3,5],"return":2,"static":3,"true":3,"while":0,For:3,ROS:1,The:0,Use:1,Useful:0,acceler:2,actual:0,adapt:4,add:[0,3],add_callback:0,add_sourc:0,add_window:0,adjust:2,alia:[],all:[0,3,5],allow:0,alt:2,ani:[0,3],anoth:0,api:4,appli:0,arg:[0,3],argument:1,argv:1,arr:[0,2],arrai:[0,1,2,3,4],avoid:2,back:3,backend:1,barrel:2,barrel_pow:2,barrelpytorch:2,bash:4,becom:0,befor:[0,3],block:[0,3],bool:3,breakpoint_displai:0,broker:1,call:3,callabl:[0,3,5],callback:[0,2,3],cam_id:3,camctrl:3,camera:[0,3],can:[0,2,3,4],cap_prop_frame_count:3,cap_prop_frame_height:3,cap_prop_frame_width:3,captur:0,center:2,channel:4,choos:1,chosen:1,close:0,code:0,color:2,com:4,command:[1,3],complet:4,condit:2,contain:4,continu:[0,3,5],control:[0,2,3],controllablelen:2,creat:2,creation:3,crop:4,crop_siz:2,ctrl:2,current:[1,2,3],data:0,decreas:2,def:5,detect:3,dict:[0,3],dictionari:0,did:3,dimension:2,direct:4,displai:[1,2,3,4],display:3,distort:2,divid:2,doctest:[],dtype:1,effect:4,enabl:2,enable_mouse_control:2,end:[0,3],end_callback:3,enumer:3,escap:0,event:[0,5],exampl:3,execut:0,eyebal:[],fake:3,fals:[0,2],file:[0,1,4],filenam:1,finish:3,fix:3,flag:[0,5],food:2,format:[3,5],fps_limit:[0,3],frame:[0,1,4],frameupdat:3,from:[1,2,3],fun:5,get:[2,3],get_cam_id:3,github:4,github_url:4,global:3,guard:2,hack:3,handl:3,handle_kei:0,handle_mous:0,help:1,high_spe:3,hold:5,http:4,ids:3,imag:2,img:3,increas:2,index:4,inf:3,inform:5,init:0,input:[0,2,4],isopen:3,iter:[0,2],kei:[0,4],key_input:0,key_loop:5,know:3,kwarg:[0,3],lambda:3,least:4,len:4,let:3,like:[2,4],limit:2,line:1,link:0,list:[0,2,3],listen:3,loop:[0,2,3],main:[0,1,3],mani:2,messag:1,mode:0,modul:4,mous:[0,2,4],mouse_ev:5,mouse_loop:5,mouseev:5,move:2,msg:1,multipl:3,mustach:2,name:[0,1],ndarrai:[0,3],newest:0,non:0,none:[0,1,2,3,5],nov:4,np_cam:3,npcam:3,number:1,numpi:[0,1,3],onc:0,onli:[0,2,3],open:3,opencv:[0,3,5],oper:[0,3],option:[0,1,3],origin:2,out:2,outer:0,output:2,output_s:2,outsid:3,outward:2,own:0,page:4,param:[0,5],paramet:[2,3],pass:[0,4],pincushion:2,pincushion_pow:2,pleas:3,power:2,press:5,print:[3,5],process:1,program:[0,2],properti:2,pub_cam_loop:3,pub_cam_thread:3,publish:3,python:4,pytorch:2,quickstart:4,read:4,read_upd:3,receiv:[3,5],reduc:[],releas:3,request:3,request_:3,request_s:3,root:4,ros:1,run:[3,5],run_ble:2,scale:3,screen:3,scroll:2,search:4,see:[],select:4,select_channel:[],selectchannel:2,selected_channel:2,send:3,set:3,shift:2,should:[0,4],show:1,simleek:4,simul:3,sinc:3,size:[0,2,3],someth:3,sourc:[0,1,2,3,5],specif:3,sphinx:4,spread:2,standard:3,start:3,stop:0,str:[0,3,5],subscrib:0,subscriberwindow:0,support:[1,2],tell:3,test_video:3,text:1,thei:0,them:3,thi:[0,1,3,4],thread:[0,3,5],three:[],thu:4,titl:0,toctre:4,too:2,topic:1,tupl:3,union:[0,3],until:[0,3],updat:[0,4],update_window_fram:0,usag:[1,3],use:3,use_ble:2,used:0,user:2,using:1,version:1,vid:[0,3],video:[0,1,3],video_sourc:[0,3],videohandlerthread:3,wait:0,wait_for_init:0,water:2,webcam:[0,1],wheel:2,where:2,window:[4,5],window_nam:0,within:2,work:3,you:4,your:4,zero:2,zeromq:1,zoom:2},titles:["displayarray.display","displayarray cli","displayarray.effects","displayarray.frame","DisplayArray Documentation","displayarray.input"],titleterms:{channel:2,cli:1,crop:2,displai:0,displayarrai:[0,1,2,3,4,5],document:4,effect:2,frame:3,indic:4,input:5,kei:5,len:2,mous:5,pass:3,read:3,select:2,select_channel:[],tabl:4,updat:3,window:0}})
\ No newline at end of file
+Search.setIndex({docnames:["display","displayarray_bash","effects","frame","index","input"],envversion:{"sphinx.domains.c":1,"sphinx.domains.changeset":1,"sphinx.domains.citation":1,"sphinx.domains.cpp":1,"sphinx.domains.javascript":1,"sphinx.domains.math":2,"sphinx.domains.python":1,"sphinx.domains.rst":1,"sphinx.domains.std":1,"sphinx.ext.todo":2,"sphinx.ext.viewcode":1,sphinx:56},filenames:["display.rst","displayarray_bash.rst","effects.rst","frame.rst","index.rst","input.rst"],objects:{"":{displayarray:[0,0,0,"-"]},"displayarray.__main__":{main:[1,1,1,""]},"displayarray.effects":{lens:[2,0,0,"-"]},"displayarray.effects.crop":{Crop:[2,2,1,""]},"displayarray.effects.crop.Crop":{center:[2,3,1,""],enable_mouse_control:[2,3,1,""],output_size:[2,3,1,""]},"displayarray.effects.lens":{Barrel:[2,2,1,""],BarrelPyTorch:[2,2,1,""],ControllableLens:[2,2,1,""],Mustache:[2,2,1,""]},"displayarray.effects.lens.Barrel":{barrel_power:[2,3,1,""],center:[2,3,1,""],enable_mouse_control:[2,3,1,""],zoom:[2,3,1,""]},"displayarray.effects.lens.ControllableLens":{run_bleed:[2,3,1,""]},"displayarray.effects.lens.Mustache":{enable_mouse_control:[2,3,1,""]},"displayarray.effects.select_channels":{SelectChannels:[2,2,1,""]},"displayarray.effects.select_channels.SelectChannels":{enable_mouse_control:[2,3,1,""]},"displayarray.frame":{FrameUpdater:[3,2,1,""],NpCam:[3,2,1,""],get_cam_ids:[3,1,1,""],pub_cam_thread:[3,1,1,""]},"displayarray.frame.FrameUpdater":{display:[3,3,1,""],loop:[3,3,1,""]},"displayarray.frame.NpCam":{get:[3,3,1,""],isOpened:[3,3,1,""],read:[3,3,1,""],release:[3,3,1,""],set:[3,3,1,""]},"displayarray.input":{MouseEvent:[5,2,1,""],key_loop:[5,2,1,""],mouse_loop:[5,2,1,""]},"displayarray.window":{SubscriberWindows:[0,2,1,""]},"displayarray.window.SubscriberWindows":{add_callback:[0,3,1,""],add_source:[0,3,1,""],add_window:[0,3,1,""],block:[0,3,1,""],end:[0,3,1,""],handle_keys:[0,3,1,""],handle_mouse:[0,3,1,""],loop:[0,3,1,""],update:[0,3,1,""],update_frames:[0,3,1,""],wait_for_init:[0,3,1,""]},displayarray:{__main__:[1,0,0,"-"],breakpoint_display:[0,1,1,""],display:[0,1,1,""],frame:[3,0,0,"-"],read_updates:[0,1,1,""]}},objnames:{"0":["py","module","Python module"],"1":["py","function","Python function"],"2":["py","class","Python class"],"3":["py","method","Python method"]},objtypes:{"0":"py:module","1":"py:function","2":"py:class","3":"py:method"},terms:{"class":[0,2,3,5],"default":[1,2,3],"float":3,"function":[0,5],"import":[],"int":[0,2,3],"new":[0,3,5],"return":2,"static":3,"true":3,"while":0,For:3,ROS:1,The:0,Use:1,Useful:0,acceler:2,actual:0,adapt:4,add:[0,3],add_callback:0,add_sourc:0,add_window:0,adjust:2,alia:[],all:[0,3,5],allow:0,alt:2,ani:[0,3],anoth:0,api:4,appli:0,arg:[0,3],argument:1,argv:1,arr:[0,2],arrai:[0,1,2,3,4],avoid:2,back:[0,3],backend:1,barrel:2,barrel_pow:2,barrelpytorch:2,bash:4,becom:0,befor:[0,3],block:0,bool:[0,3],breakpoint_displai:0,broker:1,call:3,callabl:[0,3,5],callback:[0,2,3],cam_id:3,camctrl:3,camera:[0,3],can:[0,2,3,4],cap_prop_frame_count:3,cap_prop_frame_height:3,cap_prop_frame_width:3,captur:0,center:2,channel:4,choos:1,chosen:1,close:0,code:0,color:2,com:4,command:[1,3],complet:4,condit:2,contain:4,continu:[0,3,5],control:[0,2,3],controllablelen:2,creat:2,creation:3,crop:4,crop_siz:2,ctrl:2,current:[1,2,3],data:0,decreas:2,def:5,detect:3,dict:0,dictionari:0,did:3,dimension:2,direct:4,displai:[1,2,3,4],display:3,distort:2,divid:2,doctest:[],dtype:1,effect:4,empti:0,enabl:2,enable_mouse_control:2,end:[0,3],end_callback:[],enumer:[],escap:0,event:[0,5],exampl:[],execut:0,eyebal:[],fake:3,fals:[0,2],file:[0,1,4],filenam:1,finish:3,fix:3,flag:[0,5],food:2,format:[3,5],fps_limit:[0,3],frame:[0,1,4],frameupdat:3,from:[1,2,3],fun:5,get:[2,3],get_cam_id:3,github:4,github_url:4,global:3,guard:2,hack:3,handl:3,handle_kei:0,handle_mous:0,help:1,high_spe:3,hold:5,http:4,ids:3,imag:2,img:3,increas:2,index:4,inf:[0,3],inform:5,init:0,input:[0,2,4],isopen:3,iter:[0,2],kei:[0,4],key_input:0,key_loop:5,know:3,kwarg:[0,3],lambda:[],least:4,len:4,let:3,like:[2,4],limit:2,line:1,link:0,list:[0,2,3],listen:3,loop:[0,2,3],main:[0,1,3],mani:2,messag:1,mode:0,modul:4,mous:[0,2,4],mouse_ev:5,mouse_loop:5,mouseev:5,move:2,msg:1,multipl:3,mustach:2,name:[0,1],ndarrai:[0,3],newest:0,non:0,none:[0,1,2,3,5],nov:4,np_cam:3,npcam:3,number:1,numpi:[0,1,3],onc:0,onli:[0,2,3],open:3,opencv:[0,3,5],oper:[0,3],option:[0,1,3],origin:2,out:2,outer:0,output:2,output_s:2,outsid:3,outward:2,own:0,page:4,param:[0,5],paramet:[2,3],pass:[0,4],pincushion:2,pincushion_pow:2,pleas:3,power:2,press:5,print:5,process:1,program:[0,2],properti:2,pub_cam_loop:3,pub_cam_thread:3,publish:3,python:4,pytorch:2,quickstart:4,read:[0,3],read_upd:0,receiv:[3,5],reduc:[],releas:3,request:[],request_:3,request_s:3,root:4,ros:1,run:[3,5],run_ble:2,scale:3,screen:3,scroll:2,search:4,see:[],select:4,select_channel:[],selectchannel:2,selected_channel:2,send:3,set:3,shift:2,should:[0,4],show:1,silent:0,simleek:4,simul:3,sinc:3,size:[0,2,3],someth:3,sourc:[0,1,2,3,5],specif:3,sphinx:4,spread:2,standard:3,start:3,stop:0,str:[0,3,5],subscrib:0,subscriberwindow:0,support:[1,2],tell:3,test_video:[],text:1,thei:0,them:3,thi:[0,1,3,4],thread:[0,3,5],three:[],thu:4,titl:0,toctre:4,too:2,topic:1,tupl:3,union:[0,3],until:[0,3],updat:[0,3],update_fram:0,update_window_fram:[],usag:1,use:3,use_ble:2,used:0,user:2,using:1,version:1,vid:0,video:[0,1,3],video_sourc:[0,3],videohandlerthread:3,wait:0,wait_for_init:0,water:2,webcam:[0,1],were:0,wheel:2,where:2,window:[4,5],window_nam:0,within:2,work:3,yield:0,you:4,your:4,zero:2,zeromq:1,zoom:2},titles:["displayarray.display","displayarray cli","displayarray.effects","displayarray.frame","DisplayArray Documentation","displayarray.input"],titleterms:{channel:2,cli:1,crop:2,displai:0,displayarrai:[0,1,2,3,4,5],document:4,effect:2,frame:3,indic:4,input:5,kei:5,len:2,mous:5,pass:3,read:[],select:2,select_channel:[],tabl:4,updat:[],window:0}})
\ No newline at end of file