https://github.com/pupil-labs/pyuvc
python binding to libuvc
https://github.com/pupil-labs/pyuvc
Last synced: about 2 months ago
JSON representation
python binding to libuvc
- Host: GitHub
- URL: https://github.com/pupil-labs/pyuvc
- Owner: pupil-labs
- License: other
- Created: 2015-05-08T14:51:37.000Z (almost 10 years ago)
- Default Branch: master
- Last Pushed: 2024-09-03T22:18:11.000Z (8 months ago)
- Last Synced: 2025-02-16T04:34:29.201Z (2 months ago)
- Language: Cython
- Size: 374 KB
- Stars: 133
- Watchers: 16
- Forks: 50
- Open Issues: 35
-
Metadata Files:
- Readme: README.rst
- Changelog: CHANGES.rst
- License: LICENSE
Awesome Lists containing this project
README
.. image:: https://img.shields.io/pypi/v/pupil-labs-uvc.svg
:target: `PyPI link`_.. image:: https://img.shields.io/pypi/pyversions/pupil-labs-uvc.svg
:target: `PyPI link`_.. _PyPI link: https://pypi.org/project/pupil-labs-uvc
.. image:: https://github.com/pupil-labs/pyuvc/actions/workflows/main.yml/badge.svg
:target: https://github.com/pupil-labs/pyuvc/actions?query=workflow%3A%22tests%22
:alt: tests.. image:: https://img.shields.io/badge/code%20style-black-000000.svg
:target: https://github.com/psf/black
:alt: Code style: Black.. .. image:: https://readthedocs.org/projects/skeleton/badge/?version=latest
.. :target: https://skeleton.readthedocs.io/en/latest/?badge=latest.. image:: https://img.shields.io/badge/skeleton-2022-informational
:target: https://blog.jaraco.com/skeleton*****
pyuvc
*****Python bindings for the Pupil Labs fork of `libuvc `__
with super fast jpeg decompression using `libjpegturbo `__
(utilizing the tubojpeg api).* cross platform access to UVC capture devices.
* Full access to all uvc settings (Zoom,Focus,Brightness,etc.)
* Full access to all stream and format parameters (rates,sizes,etc.)
* Enumerate all capture devices with device_list()
* Capture instance will always grab mjpeg conpressed frames from cameras.Image data is returned as `Frame` object. This object will decompress and convert on the
fly when image data is requested. This gives the user the full flexiblity: Grab just the
jpeg buffers or have them converted to YUV or Gray or RGB and only when you need.The `Frame` class has caching build in to avoid double decompression or conversion.
Install via PyPI
################.. code-block::
pip install pupil-labs-uvc
Example
#######See `examples/` for code examples.
Install from source
###################pyuvc requires the following dependencies:
- `libusb `__
- `libturbo-jpeg `__
- `POSIX Threads for Windows `__ (Windows
only, supplied via the `pupil-pthreads-win `__
Python module)Once the dependencies are installed, you can pip install the source tree::
git clone https://github.com/pupil-labs/pyuvc --recursive
export FORCE_LOCAL_LIBUVC_BUILD=ON
pip install ./pyuvcLinux
*****Ubuntu/Debian::
apt-get update -y
apt-get install -y libusb-1.0-0-dev libturbojpeg-devRunning as a non-root user
==========================One needs to setup udev rules and add the target user to the ``plugdev`` group to avoid
the privileged access requirement... code-block:: bash
echo 'SUBSYSTEM=="usb", ENV{DEVTYPE}=="usb_device", GROUP="plugdev", MODE="0664"' | sudo tee /etc/udev/rules.d/10-libuvc.rules > /dev/null
sudo udevadm trigger
sudo usermod -a -G plugdev $USER
# logout and back inmacOS
*****Homebrew::
brew update
brew install libusb jpeg-turboRunning as a non-root user
==========================Unfortunately, this is currently not possible. See
`this libusb issue thread `__ for details.WINDOWS
*******Run the following code in a powershell to install the dependencies (requires
`7z `__ to be installed).. code-block:: powershell
pip install build delvewheel
git clone https://github.com/pupil-labs/pyuvc --recursive
cd pyuvc
scripts/download-deps-win.ps1 -DEPS_TMP_PATH tmp
$Env:DEPS_PATHS_LOC = "tmp/dep_paths.json"
python -m build -w # will create a wheel in dist/ folder; insert the wheel path below
python scripts/repair-wheels-win.py $Env:DEPS_PATHS_LOC wheelhouse
pip install wheelhouse/Manual driver installation
==========================pyuvc requires the libUSBk driver to be installed for your corresponding camera.
Otherwise, metadata like the product name will be set to ``"unknown"``.Please see `these instructions `__
on how to manually install libUSBk drivers for your specific camera.