diff --git a/cvpubsubs/__init__.py b/cvpubsubs/__init__.py index 02f8497..2abf7d7 100644 --- a/cvpubsubs/__init__.py +++ b/cvpubsubs/__init__.py @@ -1 +1,3 @@ __version__ = '0.6.4' + +from .window_sub.cv_window_sub import display diff --git a/cvpubsubs/window_sub/cv_window_sub.py b/cvpubsubs/window_sub/cv_window_sub.py index c03ea54..4b30e43 100644 --- a/cvpubsubs/window_sub/cv_window_sub.py +++ b/cvpubsubs/window_sub/cv_window_sub.py @@ -5,6 +5,7 @@ import numpy as np from .winctrl import WinCtrl from cvpubsubs.webcam_pub.camctrl import CamCtrl +from cvpubsubs.webcam_pub.frame_handler import VideoHandlerThread from localpubsub import NoData from cvpubsubs.window_sub.mouse_event import MouseEvent @@ -112,3 +113,16 @@ class SubscriberWindows(object): sub_cmd.release() WinCtrl.quit(force_all_read=False) self.__stop_all_cams() + + +def display(*vids, names=[]): + vid_threads = [VideoHandlerThread(v) for v in vids] + for v in vid_threads: + v.start() + if len(names) == 0: + names = ["window {}".format(i) for i in range(len(vids))] + SubscriberWindows(window_names=names, + video_sources=vids + ).loop() + for v in vid_threads: + v.join() diff --git a/tests/test_sub_win.py b/tests/test_sub_win.py index c514748..698b7f8 100644 --- a/tests/test_sub_win.py +++ b/tests/test_sub_win.py @@ -4,7 +4,9 @@ import unittest as ut import cvpubsubs.webcam_pub as w from cvpubsubs.window_sub import SubscriberWindows from cvpubsubs.window_sub.winctrl import WinCtrl +from cvpubsubs import display from cvpubsubs.input import mouse_loop, key_loop +import numpy as np if False: import numpy as np @@ -159,3 +161,19 @@ class TestSubWin(ut.TestCase): img[mouse_event.y - 5:mouse_event.y + 10, mouse_event.x - 5:mouse_event.x + 10, :] = 1.0 VideoHandlerThread(video_source=img, callbacks=function_display_callback(conway)).display() + + def test_double_win(self): + vid1 = np.ones((100, 100)) + vid2 = np.zeros((100, 100)) + t1 = w.VideoHandlerThread(vid1) + t2 = w.VideoHandlerThread(vid2) + t1.start() + t2.start() + SubscriberWindows(window_names=['cammy', 'cammy2'], + video_sources=[vid1, vid2] + ).loop() + t1.join() + t1.join() + + def test_display(self): + display(np.ones((100, 100)), np.zeros((100, 100)))