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
Python library to manipulate Ingenico mobile payment device like iCT220 or iWL220 equipped with Telium Manager. RS232/USB.

Python library to manipulate Ingenico mobile payment device like iCT220 or iWL220 equipped with Telium Manager. RS232/USB.

TAHRI Ahmed R. 72 Dec 24, 2022
The PicoEMP is a low-cost Electromagnetic Fault Injection (EMFI) tool,

ChipSHOUTER-PicoEMP The PicoEMP is a low-cost Electromagnetic Fault Injection (EMFI) tool, designed specifically for self-study and hobbiest research.

NewAE Technology Inc. 312 Jan 07, 2023
An alternative to Demise-Assistant-Batch made entirely in Python for more capabilities.

Demise-Assistant-Python An alternative to Demise-Assistant-Batch made entirely in Python for more capabilities. IMPORTANT NOTE Demise-Assistant-Batch

SkelOrganisation 1 Nov 24, 2021
A set of postprocessing scripts and macro to accelerate the gyroid infill print speed with Klipper

A set of postprocessing scripts and macro to accelerate the gyroid infill print speed with Klipper

Jérôme W. 75 Jan 07, 2023
Make your MacOS keyboard brightness fade in and out

Make your MacOS keyboard brightness fade in and out. (It's working depends on the Kbrightness file, which only works for 2015 Macs, so this will only work on 2015 Macs.)

1 Dec 16, 2021
A python file which I wrote to allow the Dorna Robots API to draw an Image on a 3D plane

Dorna-Robotics-Internship Code In the directory "Code" is a python file which I wrote to allow the Dorna Robots API to draw an Image on a 3D plane. I

Stephen Otto 2 Dec 06, 2021
🔆 A Python module for controlling power and brightness of the official Raspberry Pi 7

rpi-backlight A Python module for controlling power and brightness of the official Raspberry Pi 7" touch display. Note: This GIF was created using the

Linus Groh 238 Jan 08, 2023
Automatically draw a KiCad schematic for a circuit prototyped on a breadboard.

Schematic-o-matic Schematic-o-matic automatically draws a KiCad schematic for a circuit prototyped on a breadboard. How It Works The first step in the

Nick Bild 22 Oct 11, 2022
Extremely simple PyBadge examples to demonstrate different aspects of CircuitPython using PyBadge hardware.

BeginnerPyBadge I purchased a PyBadge recently. I'm new to hardware. I was surprised how hard it was to find easy examples demonstrating how different

Rubini LaForest 2 Oct 21, 2021
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
LUNA: a USB multitool & nMigen library

LUNA is a full toolkit for working with USB using FPGA technology; and provides hardware, gateware, and software to enable USB applications.

Great Scott Gadgets 750 Dec 28, 2022
LifeSaver automatically, periodically saves USB flash drive data into the PC

LifeSaver automatically, periodically saves USB flash drive data into the PC. Theoriticaly it will work with any any connected drive ex - Hard Disk ,SSD ... But, can't handle Backing up multipatition

siddharth dhaka 4 Sep 26, 2021
Huawei Solar sensors for Home Assistant

Huawei Solar Sensors This integration splits out the various values that are fetched from your Huawei Solar inverter into separate HomeAssistant senso

Thijs Walcarius 151 Dec 31, 2022
Component for deep integration LedFx from Home Assistant.

LedFX for Home Assistant Component for deep integration LedFx from Home Assistant. Table of Contents FAQ Install Config Performance FAQ Q. What versio

Dmitry Mamontov 28 Dec 13, 2022
PlatformIO development platform for GSM modules

PlatformIO development platform for GSM modules Supported Modules Quectel M66 OpenCPU Arduino - TODO other - in progress... Supported Boards Comet M66

Georgi Angelov 5 Aug 06, 2022
Alarm Control Panel component for Zigbee Keypads using action_transaction field

hass_transaction_alarm_panel Alarm Control Panel component for Zigbee Keypads using action_transaction field. Works together with zigbee2mqtt Supporte

Konstantin 4 Jun 09, 2022
Code for the paper "Planning with Diffusion for Flexible Behavior Synthesis"

Planning with Diffusion Training and visualizing of diffusion models from Planning with Diffusion for Flexible Behavior Synthesis. Guided sampling cod

Michael Janner 310 Jan 07, 2023
Fener ROS2 package version 2

Fener's ROS2 codes that runs on the vehicle. This node contains basic sensing and actuation nodes for vehicle control. Also example applications will be added.

Muhammed Sezer 1 Jan 18, 2022
A script and GUI for controlling stepper motors from an arduino

A script and GUI for controlling stepper motors from an arduino (nema 23 in my case but should work for others in general)

Pip 2 Aug 01, 2022
ENC28J60 Ethernet chip driver for MicroPython (RP2)

micropy-ENC28J60 ENC28J60 Ethernet chip driver for MicroPython v1.17 (RP2) Rationale ENC28J60 is a popular and cheap module for DIY projects. At the m

11 Nov 16, 2022