Add filters (background blur, etc) to your webcam on Linux.

Overview

PyPI

webcam-filters

Add filters (background blur, etc) to your webcam on Linux.

Video conferencing applications tend to either lack video effects altogether or support only a limited set of capabilities on Linux (e.g. Zoom [1], Google Meets [2]).

Goal here is to provide a virtual webcam via v4l2loopback with a common set of filters that can be used everywhere.

Usage

Passthrough (no-op):

$ webcam-filters --input-dev /dev/video0 --output-dev /dev/video3

Blur background:

$ webcam-filters --input-dev /dev/video0 --output-dev /dev/video3 --background-blur 150

Dependencies

Other than the Python dependencies that can be automatically installed by Pip, there are a few system dependencies that require manual attention.

v4l2loopback

v4l2loopback kernel module is required to emulate a virtual webcam. See your distro's docs or v4l2loopback on how to install and set it up (e.g. https://archlinux.org/packages/community/any/v4l2loopback-dkms/).

You'll probably want to create at least one loopback device (that's persistent on boot):

$ sudo tee /etc/modprobe.d/v4l2loopback.conf << "EOF"
# /dev/video3
options v4l2loopback video_nr=3
options v4l2loopback card_label="Virtual Webcam"
options v4l2loopback exclusive_caps=1
EOF
$ sudo modprobe v4l2loopback
$ v4l2-ctl --device /dev/video3 --info

Gstreamer

Installation

You can either use pipx or pip. Pipx is recommend to keep dependencies isolated.

Latest stable:

$ pipx install --system-site-packages webcam-filters
$ # Or
$ pip install --user webcam-filters

Latest pre-release:

$ pipx install --system-site-packages --pip-args='--pre' webcam-filters
$ # Or
$ pip install --user --pre webcam-filters

Git:

$ url="git+https://github.com/jashandeep-sohi/webcam-filters.git"
$ pipx install --system-site-packages "$url"
$ # Or
$ pip install --user "$url"
[1] Zoom desktop client supports background blur as of version 5.7.6. Zoom on web does not.
[2] Google Meets supports background blur only on Chrome.
Comments
  • Hardware acceleration does not work with the radeonsi driver

    Hardware acceleration does not work with the radeonsi driver

    Hi :wave:

    When I try to use --hw-accel vaapi the GStreamer pipeline does not run. I don't know if I miss something or if some feature is missing (NYI?) in the driver...?

    $ GST_DEBUG=2 webcam-filters --input-dev /dev/video0 --output-dev /dev/video3 --background-blur 150 --hw-accel-api vaapi
    Selected input: media-type=image/jpeg, width=1280 height=720 framerate=30/1
    0:00:00.452510507 78424      0x1ea2550 WARN              vaapiblend gstvaapiblend.c:184:gst_vaapi_blend_initialize:<vaapiblend0> VPP does not support global alpha blending
    
    (python3:78424): GStreamer-CRITICAL **: 21:06:44.103: The created element should be floating, this is probably caused by faulty bindings
    
    (python3:78424): GStreamer-CRITICAL **: 21:06:44.104: The created element should be floating, this is probably caused by faulty bindings
    
    (python3:78424): GStreamer-CRITICAL **: 21:06:44.105: The created element should be floating, this is probably caused by faulty bindings
    Pipeline: READY
    Pipeline: PAUSED
    0:00:00.533376004 78424      0x201ecc0 WARN          v4l2bufferpool gstv4l2bufferpool.c:814:gst_v4l2_buffer_pool_start:<v4l2src1:pool0:src> Uncertain or not enough buffers, enabling copy threshold
    INFO: Created TensorFlow Lite XNNPACK delegate for CPU.
    0:00:01.189612022 78424      0x201ef00 WARN             vaapifilter gstvaapifilter.c:2409:gst_vaapi_filter_set_colorimetry_unlocked:<vaapifilter2> driver does not support '2:4:5:1' input colorimetry. vpp may fail or produce unexpected results.
    0:00:01.189625357 78424      0x201ef00 WARN             vaapifilter gstvaapifilter.c:2419:gst_vaapi_filter_set_colorimetry_unlocked:<vaapifilter2> driver does not support 'sRGB' output colorimetry. vpp may fail or produce unexpected results.
    0:00:01.209019915 78424      0x201ecc0 WARN                 v4l2src gstv4l2src.c:1001:gst_v4l2src_create:<v4l2src1> lost frames detected: count = 1 - ts: 0:00:00.671366999
    0:00:01.212918189 78424 0x7f93140021e0 WARN           basetransform gstbasetransform.c:1370:gst_base_transform_setcaps:<vaapipostproc1> transform could not transform video/x-raw, width=(int)1280, height=(int)720, framerate=(fraction)30/1, interlace-mode=(string)progressive, pixel-aspect-ratio=(fraction)1/1, multiview-mode=(string)mono, multiview-flags=(GstVideoMultiviewFlagsSet)0:ffffffff:/right-view-first/left-flipped/left-flopped/right-flipped/right-flopped/half-aspect/mixed-mono, format=(string)RGBx in anything we support
    

    The last line then repeats... Any idea? (Maybe the line ending with VPP does not support global alpha blending shows the problem)

    bug 
    opened by mid1221213 24
  • "Invalid literal for Fraction"

    On Ubuntu 21.04 (on which I had to install python3-gst-1.0):

    $ webcam-filters --version
    0.2.0
    $ webcam-filters --input-dev /dev/video0 --output-dev /dev/video3 --background-blur 150
    Traceback (most recent call last):
      File "/home/me/.local/bin/webcam-filters", line 8, in <module>
        sys.exit(cli())
      File "/home/me/.local/lib/python3.9/site-packages/click/core.py", line 1137, in __call__
        return self.main(*args, **kwargs)
      File "/home/me/.local/lib/python3.9/site-packages/click/core.py", line 1062, in main
        rv = self.invoke(ctx)
      File "/home/me/.local/lib/python3.9/site-packages/click/core.py", line 1404, in invoke
        return ctx.invoke(self.callback, **ctx.params)
      File "/home/me/.local/lib/python3.9/site-packages/click/core.py", line 763, in invoke
        return __callback(*args, **kwargs)
      File "/home/me/.local/lib/python3.9/site-packages/webcam_filters/main.py", line 137, in cli
        add_filters(
      File "/home/me/.local/lib/python3.9/site-packages/webcam_filters/gst.py", line 87, in add_filters
        structs = sorted(
      File "/home/me/.local/lib/python3.9/site-packages/webcam_filters/gst.py", line 90, in <lambda>
        Fraction(str(x.get_value("framerate"))),
      File "/usr/lib/python3.9/fractions.py", line 115, in __new__
        raise ValueError('Invalid literal for Fraction: %r' %
    ValueError: Invalid literal for Fraction: '{15/2,5/1}'
    
    bug 
    opened by mid1221213 13
  • Python plugins not loading on OpenSUSE

    Python plugins not loading on OpenSUSE

    [23:21:59] ~ $ GST_DEBUG=GST_PLUGIN_LOADING:4,pyplugin:6 webcam-filters --background-blur 50 --input-dev /dev/video5 --output-dev /dev/video0
    0:00:00.000268384 18134 0x5626dde96a70 INFO      GST_PLUGIN_LOADING gstplugin.c:325:_priv_gst_plugin_initialize: registering 0 static plugins
    0:00:00.000325815 18134 0x5626dde96a70 INFO      GST_PLUGIN_LOADING gstplugin.c:233:gst_plugin_register_static: registered static plugin "staticelements"
    0:00:00.000332994 18134 0x5626dde96a70 INFO      GST_PLUGIN_LOADING gstplugin.c:235:gst_plugin_register_static: added static plugin "staticelements", result: 1
    0:00:00.197454235 18134 0x5626dde96a70 INFO      GST_PLUGIN_LOADING gstplugin.c:915:_priv_gst_plugin_load_file_for_registry: plugin "/usr/lib64/gstreamer-1.0/libgstvideo4linux2.so" loaded
    Selectd input: media-type=image/jpeg, width=1280 height=720 framerate=30/1
    0:00:00.210186485 18134 0x5626dde96a70 INFO      GST_PLUGIN_LOADING gstplugin.c:915:_priv_gst_plugin_load_file_for_registry: plugin "/usr/lib64/gstreamer-1.0/libgstcoreelements.so" loaded
    0:00:00.215944899 18134 0x5626dde96a70 INFO      GST_PLUGIN_LOADING gstplugin.c:915:_priv_gst_plugin_load_file_for_registry: plugin "/usr/lib64/gstreamer-1.0/libgstplayback.so" loaded
    0:00:00.218019679 18134 0x5626dde96a70 INFO      GST_PLUGIN_LOADING gstplugin.c:915:_priv_gst_plugin_load_file_for_registry: plugin "/usr/lib64/gstreamer-1.0/libgstvideoconvert.so" loaded
    Traceback (most recent call last):
      File "/home/hector/.local/bin/webcam-filters", line 8, in <module>
        sys.exit(cli())
      File "/home/hector/.local/pipx/venvs/webcam-filters/lib64/python3.9/site-packages/click/core.py", line 1137, in __call__
        return self.main(*args, **kwargs)
      File "/home/hector/.local/pipx/venvs/webcam-filters/lib64/python3.9/site-packages/click/core.py", line 1062, in main
        rv = self.invoke(ctx)
      File "/home/hector/.local/pipx/venvs/webcam-filters/lib64/python3.9/site-packages/click/core.py", line 1404, in invoke
        return ctx.invoke(self.callback, **ctx.params)
      File "/home/hector/.local/pipx/venvs/webcam-filters/lib64/python3.9/site-packages/click/core.py", line 763, in invoke
        return __callback(*args, **kwargs)
      File "/home/hector/.local/pipx/venvs/webcam-filters/lib64/python3.9/site-packages/webcam_filters/main.py", line 139, in cli
        add_filters(
      File "/home/hector/.local/pipx/venvs/webcam-filters/lib64/python3.9/site-packages/webcam_filters/gst.py", line 159, in add_filters
        selfie.set_property("model", selfie_segmentation_model)
    AttributeError: 'NoneType' object has no attribute 'set_property'
    

    @hsanjuan creating a new issue for this.

    I don't see libgstpython.so being loaded, which means none of Python plugins also get loaded. Normally, it looks something like this:

    0:00:01.029100122 12710 0x55eb5f0b6c70 LOG                 pyplugin gstpythonplugin.c:232:plugin_init: Checking to see if libpython is already loaded                                                                                    
    0:00:01.029108435 12710 0x55eb5f0b6c70 LOG                 pyplugin gstpythonplugin.c:235:plugin_init: libpython is already loaded                
    0:00:01.029111008 12710 0x55eb5f0b6c70 LOG                 pyplugin gstpythonplugin.c:254:plugin_init: python was already initialized
    0:00:01.029116664 12710 0x55eb5f0b6c70 LOG                 pyplugin gstpythonplugin.c:274:plugin_init: Running with python version '3.9.6 (default, Jun 30 2021, 10:22:16) 
    [GCC 11.1.0]'                                                                                                                                                                                                                                 
    0:00:01.029118772 12710 0x55eb5f0b6c70 LOG                 pyplugin gstpythonplugin.c:276:plugin_init: initializing pygobject                           
    0:00:01.029188105 12710 0x55eb5f0b6c70 DEBUG               pyplugin gstpythonplugin.c:156:gst_python_plugin_load: GST_PLUGIN_PATH set to /home/gamma/.local/pipx/venvs/webcam-filters/lib/python3.9/site-packages/webcam_filters/plugins:
    0:00:01.029203475 12710 0x55eb5f0b6c70 DEBUG               pyplugin gstpythonplugin.c:48:gst_python_plugin_load_file: loading plugin cv2_boxfilter                                                               
    0:00:01.164450264 12710 0x55eb5f0b6c70 INFO                pyplugin gstpythonplugin.c:103:gst_python_plugin_load_file: Valid plugin             
    0:00:01.164474670 12710 0x55eb5f0b6c70 DEBUG               pyplugin gstpythonplugin.c:48:gst_python_plugin_load_file: loading plugin numpy_where                                                                                              0:00:01.166064073 12710 0x55eb5f0b6c70 INFO                pyplugin gstpythonplugin.c:103:gst_python_plugin_load_file: Valid plugin
    0:00:01.166078845 12710 0x55eb5f0b6c70 DEBUG               pyplugin gstpythonplugin.c:48:gst_python_plugin_load_file: loading plugin selfie_segmentation                                                                           
    0:00:01.356304339 12710 0x55eb5f0b6c70 INFO                pyplugin gstpythonplugin.c:103:gst_python_plugin_load_file: Valid plugin                                                
    0:00:01.356338024 12710 0x55eb5f0b6c70 DEBUG               pyplugin gstpythonplugin.c:121:gst_python_load_directory: Couldn't open Python plugin dir: Error opening directory “python”: No such file or directory
    0:00:01.356344484 12710 0x55eb5f0b6c70 DEBUG               pyplugin gstpythonplugin.c:176:gst_python_plugin_load: GST_PLUGIN_SYSTEM_PATH not set
    0:00:01.356352301 12710 0x55eb5f0b6c70 DEBUG               pyplugin gstpythonplugin.c:121:gst_python_load_directory: Couldn't open Python plugin dir: Error opening directory “/home/gamma/.gstreamer-1.0/plugins/python”: No such file or dir
    ectory                                                                                                                                                                                                                                        
    0:00:01.356358134 12710 0x55eb5f0b6c70 DEBUG               pyplugin gstpythonplugin.c:121:gst_python_load_directory: Couldn't open Python plugin dir: Error opening directory “lib/gstreamer-1.0/python”: No such file or directory
    0:00:01.356364671 12710 0x55eb5f0b6c70 INFO      GST_PLUGIN_LOADING gstplugin.c:915:_priv_gst_plugin_load_file_for_registry: plugin "/usr/lib/gstreamer-1.0/libgstpython.so" loaded
    

    The only thing I can think of is libgstpython.so isn't in a path that GStreamer looks for plugins by default. What happens if you add /usr/lib64/gstreamer-1.0/ to GST_PLUGIN_PATH?

    GST_PLUGIN_PATH="/usr/lib64/gstreamer-1.0:$GST_PLUGIN_PATH" GST_DEBUG=GST_PLUGIN_LOADING:4,pyplugin:6 webcam-filters --background-blur 50 ...
    

    Originally posted by @hsanjuan in https://github.com/jashandeep-sohi/webcam-filters/issues/4#issuecomment-913229787

    opened by jashandeep-sohi 10
  • "AttributeError: 'NoneType' object has no attribute 'set_property'" when setting blur

    Running Debian bullseye here, with python 3.9 and gstreamer 1.18.4 (though python3-gst 1.18.3). When I try to start things up (after creating a v4l2loopback device per the README, at /dev/video11):

    $ webcam-filters --input-dev /dev/video2 --output-dev /dev/video11 --background-blur 150
    Traceback (most recent call last):
      File "/home/brian/.local/bin/webcam-filters", line 8, in <module>
        sys.exit(cli())
      File "/home/brian/.local/pipx/venvs/webcam-filters/lib/python3.9/site-packages/click/core.py", line 1137, in __call__
        return self.main(*args, **kwargs)
      File "/home/brian/.local/pipx/venvs/webcam-filters/lib/python3.9/site-packages/click/core.py", line 1062, in main
        rv = self.invoke(ctx)
      File "/home/brian/.local/pipx/venvs/webcam-filters/lib/python3.9/site-packages/click/core.py", line 1404, in invoke
        return ctx.invoke(self.callback, **ctx.params)
      File "/home/brian/.local/pipx/venvs/webcam-filters/lib/python3.9/site-packages/click/core.py", line 763, in invoke
        return __callback(*args, **kwargs)
      File "/home/brian/.local/pipx/venvs/webcam-filters/lib/python3.9/site-packages/webcam_filters/main.py", line 137, in cli
        add_filters(
      File "/home/brian/.local/pipx/venvs/webcam-filters/lib/python3.9/site-packages/webcam_filters/gst.py", line 152, in add_filters
        selfie.set_property("model", selfie_segmentation_model)
    AttributeError: 'NoneType' object has no attribute 'set_property'
    
    opened by kelnos 9
  • numpy_where element does not negoitate cap correctly

    numpy_where element does not negoitate cap correctly

    As stated in #3, I have a problem where the command, when launched with some parameters for resolution / framerate, exits after one second without showing any error message. Example:

    $ webcam-filters --input-dev /dev/video0 --output-dev /dev/video3 --background-blur 150
    Selectd input: media-type=image/jpeg, width=1280 height=720 framerate=30/1
    
    (python3:125359): GStreamer-CRITICAL **: 20:04:27.677: The created element should be floating, this is probably caused by faulty bindings
    
    (python3:125359): GStreamer-CRITICAL **: 20:04:27.677: The created element should be floating, this is probably caused by faulty bindings
    
    (python3:125359): GStreamer-CRITICAL **: 20:04:27.678: The created element should be floating, this is probably caused by faulty bindings
    INFO: Created TensorFlow Lite XNNPACK delegate for CPU.
    $ 
    

    Actually, at least with my webcam (a Logitech HD Pro C920), the only working parameters are when setting the resolution / framerate to 1920x1080 at 30 FPS (image/jpeg).

    Just tried at the moment to run it with the env variable GST_DEBUG=1 and I get this error just before it gives back the prompt:

    0:00:01.066575233 125506      0x215ac00 ERROR                 python numpy_where.py:148:do_aggregate: buffer is too small for requested array
    
    bug 
    opened by mid1221213 6
  • Unable to install

    Unable to install

    1. Created a virtualenv
    2. Installed pipx
    3. Got below error:
    PIP STDOUT
    ----------
    
    PIP STDERR
    ----------
    ERROR: Could not find a version that satisfies the requirement webcam-filters (from versions: none)
    ERROR: No matching distribution found for webcam-filters
    

    $ python3 --version Python 3.7.7

    opened by SoumenDass 6
  • Error while running the demo commands

    Error while running the demo commands

    $ webcam-filters --input-dev /dev/video0 --output-dev /dev/video3 --background-blur 150

    Traceback (most recent call last):
      File "/home/eeroh/.local/bin/webcam-filters", line 8, in <module>
        sys.exit(cli())
      File "/home/eeroh/.local/lib/python3.9/site-packages/click/core.py", line 1137, in __call__
        return self.main(*args, **kwargs)
      File "/home/eeroh/.local/lib/python3.9/site-packages/click/core.py", line 1062, in main
        rv = self.invoke(ctx)
      File "/home/eeroh/.local/lib/python3.9/site-packages/click/core.py", line 1404, in invoke
        return ctx.invoke(self.callback, **ctx.params)
      File "/home/eeroh/.local/lib/python3.9/site-packages/click/core.py", line 763, in invoke
        return __callback(*args, **kwargs)
      File "/home/eeroh/.local/lib/python3.9/site-packages/webcam_filters/main.py", line 137, in cli
        add_filters(
      File "/home/eeroh/.local/lib/python3.9/site-packages/webcam_filters/gst.py", line 68, in add_filters
        for c in caps:
    TypeError: 'Caps' object is not iterable
    
    documentation 
    opened by vincit-haihala 5
  • Caps is not iterable

    Caps is not iterable

    I'm on master

    ❯ webcam-filters --input-dev /dev/video0 --output-dev /dev/vid
    eo3 --background-blur 150
    Traceback (most recent call last):
      File "/home/raffaele/.local/bin/webcam-filters", line 8, in <module>
        sys.exit(main())
      File "/home/raffaele/.local/lib/python3.10/site-packages/webcam_filters/__main__.py", line 5, in main
        cli.main(prog_name="webcam-filters")
      File "/home/raffaele/.local/lib/python3.10/site-packages/click/core.py", line 1055, in main
        rv = self.invoke(ctx)
      File "/home/raffaele/.local/lib/python3.10/site-packages/click/core.py", line 1404, in invoke
        return ctx.invoke(self.callback, **ctx.params)
      File "/home/raffaele/.local/lib/python3.10/site-packages/click/core.py", line 760, in invoke
        return __callback(*args, **kwargs)
      File "/home/raffaele/.local/lib/python3.10/site-packages/webcam_filters/main.py", line 156, in cli
        p.run()
      File "/home/raffaele/.local/lib/python3.10/site-packages/webcam_filters/gst.py", line 114, in run
        pipeline = self.build_pipeline()
      File "/home/raffaele/.local/lib/python3.10/site-packages/webcam_filters/gst.py", line 186, in build_pipeline
        input_caps = self.select_input()
      File "/home/raffaele/.local/lib/python3.10/site-packages/webcam_filters/gst.py", line 150, in select_input
        for s in caps:
    TypeError: 'Caps' object is not iterable
    
    opened by raffaem 4
  • AttributeError: __enter__ when running with blur

    AttributeError: __enter__ when running with blur

    Hi, I'm still struggling to get blur to work on Ubuntu 20.04. I struggled with #4 but got past that by installing gstreamer1.0-python3-plugin-loader. The command does not 'crash' now but it spits out an infinite stream of errors:

    % GST_DEBUG=GST_PLUGIN_LOADING:4,pyplugin:6 webcam-filters --input-dev /dev/video0 --output-dev /dev/video3 --background-blur 150 | sed 's/jgrgt/jgrgt/g'
    0:00:00.000339346 88314      0x1229670 INFO      GST_PLUGIN_LOADING gstplugin.c:318:_priv_gst_plugin_initialize: registering 0 static plugins
    0:00:00.000423577 88314      0x1229670 INFO      GST_PLUGIN_LOADING gstplugin.c:226:gst_plugin_register_static: registered static plugin "staticelements"
    0:00:00.000450943 88314      0x1229670 INFO      GST_PLUGIN_LOADING gstplugin.c:228:gst_plugin_register_static: added static plugin "staticelements", result: 1
    0:00:00.008871418 88314      0x1229670 INFO      GST_PLUGIN_LOADING gstplugin.c:1524:gst_plugin_ext_dep_extract_env_vars_paths:<plugin36> ignoring environment variable content '': either not an absolute path or not a path at all
    0:00:00.008884089 88314      0x1229670 INFO      GST_PLUGIN_LOADING gstplugin.c:1524:gst_plugin_ext_dep_extract_env_vars_paths:<plugin36> ignoring environment variable content '1': either not an absolute path or not a path at all
    0:00:00.009128618 88314      0x1229670 INFO      GST_PLUGIN_LOADING gstplugin.c:1524:gst_plugin_ext_dep_extract_env_vars_paths:<plugin106> ignoring environment variable content '': either not an absolute path or not a path at all
    0:00:00.013450325 88314      0x1229670 INFO      GST_PLUGIN_LOADING gstplugin.c:902:_priv_gst_plugin_load_file_for_registry: plugin "/usr/lib/x86_64-linux-gnu/gstreamer-1.0/libgstvideo4linux2.so" loaded
    Selectd input: media-type=image/jpeg, width=1280 height=720 framerate=30/1
    0:00:00.016463374 88314      0x1229670 INFO      GST_PLUGIN_LOADING gstplugin.c:902:_priv_gst_plugin_load_file_for_registry: plugin "/usr/lib/x86_64-linux-gnu/gstreamer-1.0/libgstcoreelements.so" loaded
    0:00:00.017510553 88314      0x1229670 INFO      GST_PLUGIN_LOADING gstplugin.c:902:_priv_gst_plugin_load_file_for_registry: plugin "/usr/lib/x86_64-linux-gnu/gstreamer-1.0/libgstplayback.so" loaded
    0:00:00.018003740 88314      0x1229670 INFO      GST_PLUGIN_LOADING gstplugin.c:902:_priv_gst_plugin_load_file_for_registry: plugin "/usr/lib/x86_64-linux-gnu/gstreamer-1.0/libgstvideoconvert.so" loaded
    0:00:00.021918098 88314      0x1229670 LOG                 pyplugin gstpythonplugin.c:227:plugin_init: Checking to see if libpython is already loaded
    0:00:00.021953189 88314      0x1229670 LOG                 pyplugin gstpythonplugin.c:230:plugin_init: libpython is already loaded
    0:00:00.021958312 88314      0x1229670 LOG                 pyplugin gstpythonplugin.c:249:plugin_init: python was already initialized
    0:00:00.021967731 88314      0x1229670 LOG                 pyplugin gstpythonplugin.c:253:plugin_init: Running with python version '3.8.10 (default, Jun  2 2021, 10:49:15) 
    [GCC 9.4.0]'
    0:00:00.021972050 88314      0x1229670 LOG                 pyplugin gstpythonplugin.c:255:plugin_init: initializing pygobject
    0:00:00.022180382 88314      0x1229670 DEBUG               pyplugin gstpythonplugin.c:154:gst_python_plugin_load: GST_PLUGIN_PATH set to /home/jgrgt/.local/lib/python3.8/site-packages/webcam_filters/plugins:
    0:00:00.022221452 88314      0x1229670 DEBUG               pyplugin gstpythonplugin.c:48:gst_python_plugin_load_file: loading plugin cv2_boxfilter
    0:00:00.144117053 88314      0x1229670 INFO                pyplugin gstpythonplugin.c:103:gst_python_plugin_load_file: Valid plugin
    0:00:00.144157775 88314      0x1229670 DEBUG               pyplugin gstpythonplugin.c:48:gst_python_plugin_load_file: loading plugin selfie_segmentation
    0:00:00.395388933 88314      0x1229670 INFO                pyplugin gstpythonplugin.c:103:gst_python_plugin_load_file: Valid plugin
    0:00:00.395410970 88314      0x1229670 DEBUG               pyplugin gstpythonplugin.c:48:gst_python_plugin_load_file: loading plugin numpy_where
    0:00:00.396734247 88314      0x1229670 INFO                pyplugin gstpythonplugin.c:103:gst_python_plugin_load_file: Valid plugin
    0:00:00.396762556 88314      0x1229670 DEBUG               pyplugin gstpythonplugin.c:121:gst_python_load_directory: Couldn't open Python plugin dir: Error opening directory “python”: No such file or directory
    0:00:00.396772276 88314      0x1229670 DEBUG               pyplugin gstpythonplugin.c:172:gst_python_plugin_load: GST_PLUGIN_SYSTEM_PATH not set
    0:00:00.396783639 88314      0x1229670 DEBUG               pyplugin gstpythonplugin.c:121:gst_python_load_directory: Couldn't open Python plugin dir: Error opening directory “/home/jgrgt/.gstreamer-1.0/plugins/python”: No such file or directory
    0:00:00.396793250 88314      0x1229670 DEBUG               pyplugin gstpythonplugin.c:121:gst_python_load_directory: Couldn't open Python plugin dir: Error opening directory “lib/x86_64-linux-gnu/gstreamer-1.0/python”: No such file or directory
    0:00:00.396802097 88314      0x1229670 INFO      GST_PLUGIN_LOADING gstplugin.c:902:_priv_gst_plugin_load_file_for_registry: plugin "/usr/lib/x86_64-linux-gnu/gstreamer-1.0/libgstpython.so" loaded
    INFO: Created TensorFlow Lite XNNPACK delegate for CPU.
    0:00:00.420456846 88314      0x1ecccc0 INFO      GST_PLUGIN_LOADING gstplugin.c:902:_priv_gst_plugin_load_file_for_registry: plugin "/usr/lib/x86_64-linux-gnu/gstreamer-1.0/libgstjpeg.so" loaded
    Traceback (most recent call last):
      File "/home/jgrgt/.local/lib/python3.8/site-packages/webcam_filters/plugins/python/selfie_segmentation.py", line 151, in do_transform_ip
        with inbuf_info:
    AttributeError: __enter__
    
    During handling of the above exception, another exception occurred:
    
    Traceback (most recent call last):
    Traceback (most recent call last):
      File "/home/jgrgt/.local/lib/python3.8/site-packages/webcam_filters/plugins/python/cv2_boxfilter.py", line 104, in do_transform_ip
      File "/home/jgrgt/.local/lib/python3.8/site-packages/webcam_filters/plugins/python/selfie_segmentation.py", line 169, in do_transform_ip
        with inbuf_info:
    AttributeError: __enter__
        except Gst.MapError as e:
    
    During handling of the above exception, another exception occurred:
    
    Traceback (most recent call last):
      File "/usr/lib/python3/dist-packages/gi/overrides/__init__.py", line 32, in __getattr__
      File "/home/jgrgt/.local/lib/python3.8/site-packages/webcam_filters/plugins/python/cv2_boxfilter.py", line 115, in do_transform_ip
        return getattr(self._introspection_module, name)
      File "/usr/lib/python3/dist-packages/gi/module.py", line 131, in __getattr__
        except Gst.MapError as e:
      File "/usr/lib/python3/dist-packages/gi/overrides/__init__.py", line 32, in __getattr__
        raise AttributeError("%r object has no attribute %r" % (
    AttributeError: 'gi.repository.Gst' object has no attribute 'MapError'
        return getattr(self._introspection_module, name)
      File "/usr/lib/python3/dist-packages/gi/module.py", line 131, in __getattr__
        raise AttributeError("%r object has no attribute %r" % (
    AttributeError: 'gi.repository.Gst' object has no attribute 'MapError'
    Traceback (most recent call last):
      File "/home/jgrgt/.local/lib/python3.8/site-packages/webcam_filters/plugins/python/cv2_boxfilter.py", line 104, in do_transform_ip
    Traceback (most recent call last):
      File "/home/jgrgt/.local/lib/python3.8/site-packages/webcam_filters/plugins/python/selfie_segmentation.py", line 151, in do_transform_ip
        with inbuf_info:
    AttributeError: __enter__
    
    During handling of the above exception, another exception occurred:
    
    Traceback (most recent call last):
        with inbuf_info:
      File "/home/jgrgt/.local/lib/python3.8/site-packages/webcam_filters/plugins/python/cv2_boxfilter.py", line 115, in do_transform_ip
    AttributeError: __enter__
    
    During handling of the above exception, another exception occurred:
    
    Traceback (most recent call last):
      File "/home/jgrgt/.local/lib/python3.8/site-packages/webcam_filters/plugins/python/selfie_segmentation.py", line 169, in do_transform_ip
        except Gst.MapError as e:
      File "/usr/lib/python3/dist-packages/gi/overrides/__init__.py", line 32, in __getattr__
        except Gst.MapError as e:
      File "/usr/lib/python3/dist-packages/gi/overrides/__init__.py", line 32, in __getattr__
        return getattr(self._introspection_module, name)
        return getattr(self._introspection_module, name)
      File "/usr/lib/python3/dist-packages/gi/module.py", line 131, in __getattr__
      File "/usr/lib/python3/dist-packages/gi/module.py", line 131, in __getattr__
        raise AttributeError("%r object has no attribute %r" % (
        raise AttributeError("%r object has no attribute %r" % (
    AttributeError: 'gi.repository.Gst' object has no attribute 'MapError'
    AttributeError: 'gi.repository.Gst' object has no attribute 'MapError'
    Traceback (most recent call last):
      File "/home/jgrgt/.local/lib/python3.8/site-packages/webcam_filters/plugins/python/numpy_where.py", line 109, in do_aggregate
        self.selected_samples(cbuf.pts, cbuf.dts, cbuf.duration, None)
    AttributeError: 'Where' object has no attribute 'selected_samples'
    

    Any ideas what I'm still missing?

    opened by jgrgt 4
  • Bump click from 8.0.3 to 8.1.3

    Bump click from 8.0.3 to 8.1.3

    Bumps click from 8.0.3 to 8.1.3.

    Release notes

    Sourced from click's releases.

    8.1.3

    This is a fix release for the 8.1.0 feature release.

    8.1.2

    This is a fix release for the 8.1.0 feature release.

    8.1.1

    This is a fix release for the 8.1.0 feature release.

    8.1.0

    This is a feature release, which includes new features and removes previously deprecated features. The 8.1.x branch is now the supported bugfix branch, the 8.0.x branch will become a tag marking the end of support for that branch. We encourage everyone to upgrade, and to use a tool such as pip-tools to pin all dependencies and control upgrades.

    8.0.4

    Changelog

    Sourced from click's changelog.

    Version 8.1.3

    Released 2022-04-28

    • Use verbose form of typing.Callable for @command and @group. :issue:2255
    • Show error when attempting to create an option with multiple=True, is_flag=True. Use count instead. :issue:2246

    Version 8.1.2

    Released 2022-03-31

    • Fix error message for readable path check that was mixed up with the executable check. :pr:2236
    • Restore parameter order for Path, placing the executable parameter at the end. It is recommended to use keyword arguments instead of positional arguments. :issue:2235

    Version 8.1.1

    Released 2022-03-30

    • Fix an issue with decorator typing that caused type checking to report that a command was not callable. :issue:2227

    Version 8.1.0

    Released 2022-03-28

    • Drop support for Python 3.6. :pr:2129

    • Remove previously deprecated code. :pr:2130

      • Group.resultcallback is renamed to result_callback.
      • autocompletion parameter to Command is renamed to shell_complete.
      • get_terminal_size is removed, use shutil.get_terminal_size instead.
      • get_os_args is removed, use sys.argv[1:] instead.
    • Rely on :pep:538 and :pep:540 to handle selecting UTF-8 encoding instead of ASCII. Click's locale encoding detection is removed.

    ... (truncated)

    Commits

    Dependabot compatibility score

    Dependabot will resolve any conflicts with this PR as long as you don't alter it yourself. You can also trigger a rebase manually by commenting @dependabot rebase.


    Dependabot commands and options

    You can trigger Dependabot actions by commenting on this PR:

    • @dependabot rebase will rebase this PR
    • @dependabot recreate will recreate this PR, overwriting any edits that have been made to it
    • @dependabot merge will merge this PR after your CI passes on it
    • @dependabot squash and merge will squash and merge this PR after your CI passes on it
    • @dependabot cancel merge will cancel a previously requested merge and block automerging
    • @dependabot reopen will reopen this PR if it is closed
    • @dependabot close will close this PR and stop Dependabot recreating it. You can achieve the same result by closing it manually
    • @dependabot ignore this major version will close this PR and stop Dependabot creating any more for this major version (unless you reopen the PR or upgrade to it yourself)
    • @dependabot ignore this minor version will close this PR and stop Dependabot creating any more for this minor version (unless you reopen the PR or upgrade to it yourself)
    • @dependabot ignore this dependency will close this PR and stop Dependabot creating any more for this dependency (unless you reopen the PR or upgrade to it yourself)
    dependencies 
    opened by dependabot[bot] 3
  • Bump opencv-contrib-python from 4.5.3.56 to 4.6.0.66

    Bump opencv-contrib-python from 4.5.3.56 to 4.6.0.66

    Bumps opencv-contrib-python from 4.5.3.56 to 4.6.0.66.

    Release notes

    Sourced from opencv-contrib-python's releases.

    4.6.0.66

    opencv-python: https://pypi.org/project/opencv-python/ opencv-contrib-python: https://pypi.org/project/opencv-contrib-python/ opencv-python-headless: https://pypi.org/project/opencv-python-headless/ opencv-contrib-python-headless: https://pypi.org/project/opencv-contrib-python-headless/

    OpenCV 4.6.0

    Changes:

    • Updated third-party libraries to fix potential vulnerabilities. #666
    • Added support for building Windows ARM64 Python package. #644
    • The repository has been synchronized with scikit-build 0.14.0 release. #637
    • The build without internet connection has been fixed. #642
    • This release produced with libpng 1.6.37 and supports eXIf orientation tag. #662

    4.5.5.64

    opencv-python: https://pypi.org/project/opencv-python/ opencv-contrib-python: https://pypi.org/project/opencv-contrib-python/ opencv-python-headless: https://pypi.org/project/opencv-python-headless/ opencv-contrib-python-headless: https://pypi.org/project/opencv-contrib-python-headless/

    OpenCV 4.5.5

    Changes:

    • Updated third-party libraries to fix potential vulnerabilities. #617

    4.5.5.62

    opencv-python: https://pypi.org/project/opencv-python/ opencv-contrib-python: https://pypi.org/project/opencv-contrib-python/ opencv-python-headless: https://pypi.org/project/opencv-python-headless/ opencv-contrib-python-headless: https://pypi.org/project/opencv-contrib-python-headless/

    OpenCV 4.5.5

    Changes:

    • Switched to a single binary release with Python Limited API to cover all Python versions since 3.6. #595

    4.5.4.60

    opencv-python: https://pypi.org/project/opencv-python/ opencv-contrib-python: https://pypi.org/project/opencv-contrib-python/ opencv-python-headless: https://pypi.org/project/opencv-python-headless/ opencv-contrib-python-headless: https://pypi.org/project/opencv-contrib-python-headless/

    OpenCV 4.5.4

    Changes:

    • The build from source has been fixed. #577
    • Imshow segmentation fault issue have been fixed on Linux x86_64 with Python 3.9. #572
    • Updated OpenCV dependency to tag 4.5.4. #578
    • Pylint no-member warning and an autocomplete in IDE were fixed. #579

    ... (truncated)

    Commits

    Dependabot compatibility score

    Dependabot will resolve any conflicts with this PR as long as you don't alter it yourself. You can also trigger a rebase manually by commenting @dependabot rebase.


    Dependabot commands and options

    You can trigger Dependabot actions by commenting on this PR:

    • @dependabot rebase will rebase this PR
    • @dependabot recreate will recreate this PR, overwriting any edits that have been made to it
    • @dependabot merge will merge this PR after your CI passes on it
    • @dependabot squash and merge will squash and merge this PR after your CI passes on it
    • @dependabot cancel merge will cancel a previously requested merge and block automerging
    • @dependabot reopen will reopen this PR if it is closed
    • @dependabot close will close this PR and stop Dependabot recreating it. You can achieve the same result by closing it manually
    • @dependabot ignore this major version will close this PR and stop Dependabot creating any more for this major version (unless you reopen the PR or upgrade to it yourself)
    • @dependabot ignore this minor version will close this PR and stop Dependabot creating any more for this minor version (unless you reopen the PR or upgrade to it yourself)
    • @dependabot ignore this dependency will close this PR and stop Dependabot creating any more for this dependency (unless you reopen the PR or upgrade to it yourself)
    dependencies 
    opened by dependabot[bot] 2
  • Bump rich from 10.16.2 to 13.0.0

    Bump rich from 10.16.2 to 13.0.0

    Bumps rich from 10.16.2 to 13.0.0.

    Release notes

    Sourced from rich's releases.

    Dropped Python3.6 support

    Some relatively minor fixes and improvements. The most significant update (and the reason for the major version bump) is that Rich has dropped Python3.6 support.

    If you are a Python3.6 user and can't upgrade for whatever reason, pin to version 12.6.0.

    [13.0.0] - 2022-12-30

    Fixed

    • Reversed pre and code tags in base HTML format Textualize/rich#2642
    • Improved detection of attrs library, that isn't confused by the presence of the attr library.
    • Fixed issue with locals_max_length parameter not being respected in Traceback Textualize/rich#2649
    • Handling of broken fileno made more robust. Fixes Textualize/rich#2645
    • Fixed missing fileno on FileProxy

    Changed

    • Bumped minimum Python version to 3.7 Textualize/rich#2567
    • Pretty-printing of "tagged" __repr__ results is now greedy when matching tags Textualize/rich#2565
    • progress.track now supports deriving total from __length_hint__

    Added

    The FORCE_COLOR edition

    NOTE: 12.6.0 may be the last version to support Python3.6. The next version will be 13.0.0, and will be Python3.7+

    [12.6.0] - 2022-10-02

    Added

    Fixed

    ... (truncated)

    Changelog

    Sourced from rich's changelog.

    [13.0.0] - 2022-12-30

    Fixed

    • Reversed pre and code tags in base HTML format Textualize/rich#2642
    • Improved detection of attrs library, that isn't confused by the presence of the attr library.
    • Fixed issue with locals_max_length parameter not being respected in Traceback Textualize/rich#2649
    • Handling of broken fileno made more robust. Fixes Textualize/rich#2645
    • Fixed missing fileno on FileProxy

    Changed

    • Bumped minimum Python version to 3.7 Textualize/rich#2567
    • Pretty-printing of "tagged" __repr__ results is now greedy when matching tags Textualize/rich#2565
    • progress.track now supports deriving total from __length_hint__

    Added

    [12.6.0] - 2022-10-02

    Added

    Fixed

    Changed

    • Removed border from code blocks in Markdown

    [12.5.2] - 2022-07-18

    Added

    ... (truncated)

    Commits

    Dependabot compatibility score

    Dependabot will resolve any conflicts with this PR as long as you don't alter it yourself. You can also trigger a rebase manually by commenting @dependabot rebase.


    Dependabot commands and options

    You can trigger Dependabot actions by commenting on this PR:

    • @dependabot rebase will rebase this PR
    • @dependabot recreate will recreate this PR, overwriting any edits that have been made to it
    • @dependabot merge will merge this PR after your CI passes on it
    • @dependabot squash and merge will squash and merge this PR after your CI passes on it
    • @dependabot cancel merge will cancel a previously requested merge and block automerging
    • @dependabot reopen will reopen this PR if it is closed
    • @dependabot close will close this PR and stop Dependabot recreating it. You can achieve the same result by closing it manually
    • @dependabot ignore this major version will close this PR and stop Dependabot creating any more for this major version (unless you reopen the PR or upgrade to it yourself)
    • @dependabot ignore this minor version will close this PR and stop Dependabot creating any more for this minor version (unless you reopen the PR or upgrade to it yourself)
    • @dependabot ignore this dependency will close this PR and stop Dependabot creating any more for this dependency (unless you reopen the PR or upgrade to it yourself)
    dependencies 
    opened by dependabot[bot] 0
  • Bump opencv-contrib-python from 4.6.0.66 to 4.7.0.68

    Bump opencv-contrib-python from 4.6.0.66 to 4.7.0.68

    Bumps opencv-contrib-python from 4.6.0.66 to 4.7.0.68.

    Release notes

    Sourced from opencv-contrib-python's releases.

    4.7.0.68

    opencv-python: https://pypi.org/project/opencv-python/ opencv-contrib-python: https://pypi.org/project/opencv-contrib-python/ opencv-python-headless: https://pypi.org/project/opencv-python-headless/ opencv-contrib-python-headless: https://pypi.org/project/opencv-contrib-python-headless/

    OpenCV 4.7.0

    Changes:

    • Updated third-party libraries to fix potential vulnerabilities.
    • Dropped Python 3.6 support.
    • Added Python 3.11 support.
    Commits

    Dependabot compatibility score

    Dependabot will resolve any conflicts with this PR as long as you don't alter it yourself. You can also trigger a rebase manually by commenting @dependabot rebase.


    Dependabot commands and options

    You can trigger Dependabot actions by commenting on this PR:

    • @dependabot rebase will rebase this PR
    • @dependabot recreate will recreate this PR, overwriting any edits that have been made to it
    • @dependabot merge will merge this PR after your CI passes on it
    • @dependabot squash and merge will squash and merge this PR after your CI passes on it
    • @dependabot cancel merge will cancel a previously requested merge and block automerging
    • @dependabot reopen will reopen this PR if it is closed
    • @dependabot close will close this PR and stop Dependabot recreating it. You can achieve the same result by closing it manually
    • @dependabot ignore this major version will close this PR and stop Dependabot creating any more for this major version (unless you reopen the PR or upgrade to it yourself)
    • @dependabot ignore this minor version will close this PR and stop Dependabot creating any more for this minor version (unless you reopen the PR or upgrade to it yourself)
    • @dependabot ignore this dependency will close this PR and stop Dependabot creating any more for this dependency (unless you reopen the PR or upgrade to it yourself)
    dependencies 
    opened by dependabot[bot] 0
  • Bump numpy from 1.23.4 to 1.24.1

    Bump numpy from 1.23.4 to 1.24.1

    Bumps numpy from 1.23.4 to 1.24.1.

    Release notes

    Sourced from numpy's releases.

    v1.24.1

    NumPy 1.24.1 Release Notes

    NumPy 1.24.1 is a maintenance release that fixes bugs and regressions discovered after the 1.24.0 release. The Python versions supported by this release are 3.8-3.11.

    Contributors

    A total of 12 people contributed to this release. People with a "+" by their names contributed a patch for the first time.

    • Andrew Nelson
    • Ben Greiner +
    • Charles Harris
    • Clément Robert
    • Matteo Raso
    • Matti Picus
    • Melissa Weber Mendonça
    • Miles Cranmer
    • Ralf Gommers
    • Rohit Goswami
    • Sayed Adel
    • Sebastian Berg

    Pull requests merged

    A total of 18 pull requests were merged for this release.

    • #22820: BLD: add workaround in setup.py for newer setuptools
    • #22830: BLD: CIRRUS_TAG redux
    • #22831: DOC: fix a couple typos in 1.23 notes
    • #22832: BUG: Fix refcounting errors found using pytest-leaks
    • #22834: BUG, SIMD: Fix invalid value encountered in several ufuncs
    • #22837: TST: ignore more np.distutils.log imports
    • #22839: BUG: Do not use getdata() in np.ma.masked_invalid
    • #22847: BUG: Ensure correct behavior for rows ending in delimiter in...
    • #22848: BUG, SIMD: Fix the bitmask of the boolean comparison
    • #22857: BLD: Help raspian arm + clang 13 about __builtin_mul_overflow
    • #22858: API: Ensure a full mask is returned for masked_invalid
    • #22866: BUG: Polynomials now copy properly (#22669)
    • #22867: BUG, SIMD: Fix memory overlap in ufunc comparison loops
    • #22868: BUG: Fortify string casts against floating point warnings
    • #22875: TST: Ignore nan-warnings in randomized out tests
    • #22883: MAINT: restore npymath implementations needed for freebsd
    • #22884: BUG: Fix integer overflow in in1d for mixed integer dtypes #22877
    • #22887: BUG: Use whole file for encoding checks with charset_normalizer.

    Checksums

    ... (truncated)

    Commits
    • a28f4f2 Merge pull request #22888 from charris/prepare-1.24.1-release
    • f8fea39 REL: Prepare for the NumPY 1.24.1 release.
    • 6f491e0 Merge pull request #22887 from charris/backport-22872
    • 48f5fe4 BUG: Use whole file for encoding checks with charset_normalizer [f2py] (#22...
    • 0f3484a Merge pull request #22883 from charris/backport-22882
    • 002c60d Merge pull request #22884 from charris/backport-22878
    • 38ef9ce BUG: Fix integer overflow in in1d for mixed integer dtypes #22877 (#22878)
    • bb00c68 MAINT: restore npymath implementations needed for freebsd
    • 64e09c3 Merge pull request #22875 from charris/backport-22869
    • dc7bac6 TST: Ignore nan-warnings in randomized out tests
    • Additional commits viewable in compare view

    Dependabot compatibility score

    Dependabot will resolve any conflicts with this PR as long as you don't alter it yourself. You can also trigger a rebase manually by commenting @dependabot rebase.


    Dependabot commands and options

    You can trigger Dependabot actions by commenting on this PR:

    • @dependabot rebase will rebase this PR
    • @dependabot recreate will recreate this PR, overwriting any edits that have been made to it
    • @dependabot merge will merge this PR after your CI passes on it
    • @dependabot squash and merge will squash and merge this PR after your CI passes on it
    • @dependabot cancel merge will cancel a previously requested merge and block automerging
    • @dependabot reopen will reopen this PR if it is closed
    • @dependabot close will close this PR and stop Dependabot recreating it. You can achieve the same result by closing it manually
    • @dependabot ignore this major version will close this PR and stop Dependabot creating any more for this major version (unless you reopen the PR or upgrade to it yourself)
    • @dependabot ignore this minor version will close this PR and stop Dependabot creating any more for this minor version (unless you reopen the PR or upgrade to it yourself)
    • @dependabot ignore this dependency will close this PR and stop Dependabot creating any more for this dependency (unless you reopen the PR or upgrade to it yourself)
    dependencies 
    opened by dependabot[bot] 0
  • Bump mediapipe from 0.9.0 to 0.9.0.1

    Bump mediapipe from 0.9.0 to 0.9.0.1

    Bumps mediapipe from 0.9.0 to 0.9.0.1.

    Commits

    Dependabot compatibility score

    Dependabot will resolve any conflicts with this PR as long as you don't alter it yourself. You can also trigger a rebase manually by commenting @dependabot rebase.


    Dependabot commands and options

    You can trigger Dependabot actions by commenting on this PR:

    • @dependabot rebase will rebase this PR
    • @dependabot recreate will recreate this PR, overwriting any edits that have been made to it
    • @dependabot merge will merge this PR after your CI passes on it
    • @dependabot squash and merge will squash and merge this PR after your CI passes on it
    • @dependabot cancel merge will cancel a previously requested merge and block automerging
    • @dependabot reopen will reopen this PR if it is closed
    • @dependabot close will close this PR and stop Dependabot recreating it. You can achieve the same result by closing it manually
    • @dependabot ignore this major version will close this PR and stop Dependabot creating any more for this major version (unless you reopen the PR or upgrade to it yourself)
    • @dependabot ignore this minor version will close this PR and stop Dependabot creating any more for this minor version (unless you reopen the PR or upgrade to it yourself)
    • @dependabot ignore this dependency will close this PR and stop Dependabot creating any more for this dependency (unless you reopen the PR or upgrade to it yourself)
    dependencies 
    opened by dependabot[bot] 0
  • Error when trying to start

    Error when trying to start

    Hello. When I try to start webcam-filters, I get this error:

    # webcam-filters --input-dev /dev/video0 --output-dev /dev/video3
    Selected input: media-type=image/jpeg, width=1280 height=720 framerate=30/1
    Error from /GstPipeline:pipeline0/GstV4l2Sink:v4l2sink0: Cannot identify device '/dev/video3'.
    

    I haven't got video3 device, so error isn't that device is busy. Starting this with different outputs has no effect:

    # webcam-filters --input-dev /dev/video0 --output-dev /dev/video10
    Selected input: media-type=image/jpeg, width=1280 height=720 framerate=30/1
    Error from /GstPipeline:pipeline0/GstV4l2Sink:v4l2sink0: Cannot identify device '/dev/video10'.
    

    I sure that my camera is video0. I installed webcam-filters via pipx, but using nix doesn't fix this error. I have satisfied all dependencies. I use Ach Linux with

    # uname -a
    Linux arch 5.10.70-1-lts #1 SMP Thu, 30 Sep 2021 09:43:10 +0000 x86_64 GNU/Linux
    

    How can I fix this error? Thanks for your help.

    P. S. Sorry for my english, I'm from another county.

    opened by coder8080 9
  • Caps object is not iterable

    Caps object is not iterable

    When running webcam-filters I get the following traceback

    ➜  ~ webcam-filters --verbose --input-dev /dev/video0 --output-dev /dev/video3 --background-blur 150
    
    Traceback (most recent call last):
      File "/home/restore/.local/bin/webcam-filters", line 9, in <module>
        sys.exit(main())
      File "/home/restore/.local/lib/python3.8/site-packages/webcam_filters/__main__.py", line 5, in main
        cli.main(prog_name="webcam-filters")
      File "/home/restore/.local/lib/python3.8/site-packages/click/core.py", line 1062, in main
        rv = self.invoke(ctx)
      File "/home/restore/.local/lib/python3.8/site-packages/click/core.py", line 1404, in invoke
        return ctx.invoke(self.callback, **ctx.params)
      File "/home/restore/.local/lib/python3.8/site-packages/click/core.py", line 763, in invoke
        return __callback(*args, **kwargs)
      File "/home/restore/.local/lib/python3.8/site-packages/webcam_filters/main.py", line 154, in cli
        add_filters(
      File "/home/restore/.local/lib/python3.8/site-packages/webcam_filters/gst.py", line 98, in add_filters
        for s in caps:
    TypeError: 'Caps' object is not iterable
    
    

    I tried different devices but always the same result. Anything else I can check?

    opened by jekkos 13
Releases(v0.3.0)
Owner
Jashandeep Sohi
Jashandeep Sohi
A rubiks cube timer using a distance sensor and a raspberry pi 4, and possibly the pi pico to reduce size and cost.

distance sensor cube timer A rubiks cube timer using a distance sensor and a raspberry pi 4, and possibly the pi pico to reduce size and cost. How to

3 Feb 21, 2022
This tool emulates an EMV-CAP device, to illustrate the article "Banque en ligne : à la decouverte d'EMV-CAP" published in MISC

About This tool emulates an EMV-CAP device, to illustrate the article "Banque en ligne : à la decouverte d'EMV-CAP" published in MISC, issue #56 and f

Philippe Teuwen 28 Nov 21, 2022
An embedded application for toy-car controlling based on Raspberry Pi 3 Model B and AlphaBot2-Pi.

An embedded application for toy-car controlling based on Raspberry Pi 3 Model B and AlphaBot2-Pi. This is the source codes of my programming assignmen

StardustDL 4 Oct 19, 2022
Python library to interact with the GCE Electronics IPX800 device

A python library to control a GCE-Electronics IPX800 V4 device through its API.

Marc-Aurèle Brothier 2 Oct 20, 2021
ModbusTCP2MQTT - Sungrow & SMA Solar Inverter addon for Home Assistant

ModbusTCP2MQTT Sungrow & SMA Solar Inverter addon for Home Assistant This addon will connect directly to your Inverter using Modbus TCP. Support model

Teny Smart 40 Dec 21, 2022
Automate gate/garage door opening via 433.92MHz emitter with Raspberry Pi, Home Assistant and Homekit.

Automate opening your garage door / gate Summary This project sums up how I automated opening my garage door using a Raspberry PI, a 433Mhz emitter, H

Julien Fouilhé 29 Nov 30, 2022
Philippe 1 Jan 09, 2022
Python Wrapper for Homeassistant's REST API

HomeassistantAPI Python Wrapper for Homeassistant's REST API Please ⭐️ the repo if you find this project useful or cool! Here is a quick example. from

Nate 29 Dec 31, 2022
An arduino/ESP project that can play back G-Force data previously recorded

An arduino/ESP project that can play back G-Force data previously recorded

7 Apr 12, 2022
emhass: Energy Management for Home Assistant

emhass EMHASS: Energy Management for Home Assistant Context This module was conceived as an energy management optimization tool for residential electr

David 70 Dec 24, 2022
Adafruit IO connected smart thermostat based on CircuitPython.

Adafruit IO Thermostat Adafruit IO connected smart thermostat based on CircuitPython. Background and Motivation I have a 24 V Heat-only system with a

Shubham Chaudhary 1 Jan 18, 2022
Robo Arm :: Rigging is a rigging addon for Blender that helps animating industrial robotic arms.

Robo Arm :: Rigging Robo Arm :: Rigging is a rigging addon for Blender that helps animating industrial robotic arms. It construct serial links(a kind

2 Nov 18, 2021
Windhager myComfort custom component for Home Assistant

Windhager myComfort custom component for Home Assistant

5 Apr 27, 2022
Pihole-eink-display - A simple Python script to display PiHole statistics on an eInk Display

Pihole-eink-display - A simple Python script to display PiHole statistics on an eInk Display

Mark McIntyre 64 Oct 11, 2022
Home Assistant custom integration to fetch data from Powerpal

Powerpal custom component for Home Assistant Component to integrate with powerpal. This repository and integration is not affiliated with Powerpal. Th

Lawrence 32 Jan 07, 2023
从零开始打造一个智能家居系统

SweetHome 从零开始打造智能家居系统的尝试,主要的实现有 可以扫码添加设备并控制设备的Android App 可以控制亮灭的灯,并可以设置在Android App连接到指定Wifi后自动亮起 可以控制开关的窗帘,机械结构部分自己设计并3D打印出来 树莓派主控,实现Http请求接口和ZigBe

金榜 5 May 01, 2022
Python apps to assist with Gas Blending

Welcome to DiveTools Gas Blending This tool is for testing and educational use. It is not intended to confirm the mix of breathing gases. If this tool

Tucker 7 Sep 18, 2022
Alternative firmware for ESP8266 with easy configuration using webUI, OTA updates, automation using timers or rules, expandability and entirely local control over MQTT, HTTP, Serial or KNX. Full documentation at

Alternative firmware for ESP8266/ESP32 based devices with easy configuration using webUI, OTA updates, automation using timers or rules, expandability

Theo Arends 59 Dec 26, 2022
Run this code to blink your ThinkPad LED with a hidden mysterious Morse code! ;)

TMorse Run this code to blink your ThinkPad LED with a hidden mysterious Morse code! ;) Compatible with python3.9+. No third-party library is required

Mahyar 2 Jul 11, 2022
Control DJI Tello with Raspberry Pi and PS4 Controller

Control-DJI-Tello-with-Raspberry-Pi-and-PS4-Controller Demo of this project see

MohammadReza Sharifi 24 Aug 11, 2022