Skip to main content

CVPubSubs

A threaded PubSub OpenCV interfaceREADME.md. Webcam and video feeds to multiple windows is supported.

Installation

CVPubSubs is distributed on PyPI <https://pypi.org>_ as a universal wheel and is available on Linux/macOS and Windows and supports Python 2.7/3.5+ and PyPy.

$ pip install CVPubSubs

Usage

Video Editing and Publishing

Display your webcam

import cvpubsubs.webcam_pub as w

w.VideoHandlerThread().display()

Change Display Arguments

import cvpubsubs.webcam_pub as w

video_thread = w.VideoHandlerThread(video_source=0,
                                    callbacks = w.display_callbacks,
                                    request_size=(800, 600),
                                    high_speed = False,
                                    fps_limit = 8
                                    )

handle mouse input

import cvpubsubs.webcam_pub as w
from cvpubsubs.input import mouse_loop

@mouse_loop
def print_mouse(mouse_event):
    print(mouse_event)

w.VideoHandlerThread().display()

take in key input

import cvpubsubs.webcam_pub as w
from cvpubsubs.input import key_loop

@key_loop
def print_key_thread(key_chr):
    print("key pressed: " + str(key_chr))

w.VideoHandlerThread().display()

Run your own functions on the frames

import cvpubsubs.webcam_pub as w

def redden_frame_print_spam(frame, cam_id):
    frame[:, :, 0] = 0
    frame[:, :, 1] = 0
    print("Spam!")

w.VideoHandlerThread(callbacks=[redden_frame_print_spam] + w.display_callbacks).display()

Display a tensor

def tensor_from_image(frame, cam_id):
    ten = tensor_from_pytorch_or_tensorflow(frame)
    return ten

t = wp.VideoHandlerThread(video_source=cam, callbacks=[tensor_from_image] + wp.display_callbacks)

t.display()

Display multiple windows from one source

import cvpubsubs.webcam_pub as w
from cvpubsubs.window_sub import SubscriberWindows

def cam_handler(frame, cam_id):
    SubscriberWindows.set_global_frame_dict(cam_id, frame, frame)

t = w.VideoHandlerThread(0, [cam_handler],
                         request_size=(1280, 720),
                         high_speed=True,
                         fps_limit=240
                         )

t.start()

SubscriberWindows(window_names=['cammy', 'cammy2'],
                  video_sources=[str(0)]
                  ).loop()

t.join()

Display multiple windows from multiple sources

iport cvpubsubs.webcam_pub as w
from cvpubsubs.window_sub import SubscriberWindows

t1 = w.VideoHandlerThread(0)
t2 = w.VideoHandlerThread(1)

t1.start()
t2.start()

SubscriberWindows(window_names=['cammy', 'cammy2'],
                  video_sources=[0,1]
                  ).loop()

t1.join()
t1.join()

Run a function on each pixel

from cvpubsubs.webcam_pub import VideoHandlerThread
from cvpubsubs.webcam_pub.callbacks import function_display_callback
img = np.zeros((50, 50, 1))
img[0:5, 0:5, :] = 1

def conway_game_of_life(array, coords, finished):
    neighbors = np.sum(array[max(coords[0] - 1, 0):min(coords[0] + 2, 50),
                       max(coords[1] - 1, 0):min(coords[1] + 2, 50)])
    neighbors = max(neighbors - np.sum(array[coords[0:2]]), 0.0)
    if array[coords] == 1.0:
        if neighbors < 2 or neighbors > 3:
            array[coords] = 0.0
        elif 2 <= neighbors <= 3:
            array[coords] = 1.0
    else:
        if neighbors == 3:
            array[coords] = 1.0

VideoHandlerThread(video_source=img, callbacks=function_display_callback(conway_game_of_life)).display()

License

CVPubSubs 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>_

at your option.

Metadata

Release files for CVPubSubs 0.6.5

For a detailed explanation of source distributions (sdists) and built distributions (wheels), please see the package formats documentation.

Source distribution (sdist)

Source distribution for CVPubSubs 0.6.5
File Size Uploaded
CVPubSubs-0.6.5.tar.gz 15.8 kB Details

Release files / CVPubSubs-0.6.5.tar.gz

Download URL CVPubSubs-0.6.5.tar.gz
Size 15.8 kB
Tags Source
SHA-256 checksum
How to use checksums
282f5ff3bf6ff271848b396511b183535e2578c6ce8b6b8d21eb8255add1f032
BLAKE2b-256 checksum
How to use checksums
527851f011bd5d3e432991ffad0e412f8c2f5e73d854f352a61a8352fd672105
Upload date
Uploaded using Trusted Publishing?
What is trusted publishing?
No
Uploaded via twine/2.0.0 pkginfo/1.5.0.1 requests/2.22.0 setuptools/41.2.0 requests-toolbelt/0.9.1 tqdm/4.36.1 CPython/3.6.7

Release history Release notifications | RSS feed

This release

0.6.5 This release

1 release file

0.6.4

1 release file

0.6.3

1 release file

0.6.2

1 release file

0.6.1

1 release file

0.6.0

1 release file

0.5.0

1 release file

0.4.1

1 release file

0.4.0

1 release file

0.3.4

1 release file

0.3.3

2 release files

0.3.2

2 release files

0.3.1

2 release files

0.3.0

2 release files

0.2.2

2 release files

0.2.1

2 release files

0.2.0

2 release files

0.1.0

2 release files

Anthropic, PBC Visionary sponsor Bloomberg Visionary sponsor Hudson River Trading Visionary sponsor Meta Visionary sponsor NVIDIA Visionary sponsor Microsoft Sustainability sponsor Depot Continuous Integration AWS Cloud computing and Security Sponsor Datadog Monitoring Fastly CDN Google Download Analytics Sentry Error logging StatusPage Status page