Skip to main content

Package for converting QVideoFrame to NDArray with Qt6

Project description

AraViQ6 - NDArray-based Video processing with Qt6

PyPI version Python Version Build Status Documentation Status License

AraViQ6 is a Python package which integrates NDArray-based image processing with video pipeline of Qt6.

It provides:

  • QVideoFrame processor based on array processing
  • Converters between NDArray and QVideoFrame
  • Convenience classes and widgets for array displaying

The following Qt bindings are supported:

How to use

There are two ways to use AraViQ6; using QVideoFrame-based pipeline, or using NDArray-based pipeline.

Frame-based pipeline

Frame-based pipeline is a high-level approach that works well with Qt Multimedia scheme.


QVideoFrame pipeline with AraViQ6

Frame-based pipeline consists of:

  1. VideoFrameWorker
  2. VideoFrameProcessor

QVideoFrame comes from and goes to Qt6's QVideoSink. AraViQ6's VideoFrameWorker converts QVideoFrame to numpy array, performs processing, and sends the results to downstream in both QVideoFrame and NDArray. User may subclass the worker to define own processing.

VideoFrameProcessor wraps the worker and provides API around it. Worker is mulithreaded in the processor.

Array-based pipeline

Array-based pipeline is a low-level approach. It can be useful when third-party package provides video frame in numpy array format.


NDArray pipeline with AraViQ6

Array-based pipeline consists of:

  1. FrameToArrayConverter
  2. ArrayWorker
  3. ArrayProcessor
  4. ArrayToFrameConverter

FrameToArrayConverter and ArrayToFrameConverter performs conversion between frame pipeline and array pipeline. To retain the metadata (e.g., timestamp) of QVideoFrame, these classes includes the original frame for the array.

ArrayWorker performs processing on incoming array and sends the result to downstream in NDArray. User may subclass the worker to define own processing.

ArrayProcessor wraps the worker and provides API around it. Worker is mulithreaded in the processor.

Convenicence classes

AraViQ6 also provides various convenience classes to make building the pipeline easier.

The following classes help setting array pipeline with the video source and the display.

  • NDArrayVideoPlayer
  • NDArrayMediaCaptureSession
  • NDArrayLabel

The following classes are plug-and-play widgets where user can process the video with minimal boilerplate.

  • PlayerProcessWidget
  • CameraProcessWidget

Examples

Use cases are provided in examples directory. They can be found in documentation as well.

Installation

Before you install, be careful for other Qt-dependent packages installed in your environment. For example, non-headless OpenCV-Python modifies the Qt dependency thus can make other Qt bindings unavailable.

araviq6 can be installed using pip.

$ pip install araviq6

Documentation

AraViQ6 is documented with Sphinx. Documentation can be found on Read the Docs:

https://araviq6.readthedocs.io/

If you want to build the document yourself, clone the source code and install with [doc] option. Go to doc directory and build the document.

$ pip install araviq6[doc]
$ cd doc
$ make html

Document will be generated in build/html directory. Open index.html to see the central page.

Download files

Download the file for your platform. If you're not sure which to choose, learn more about installing packages.

Source Distribution

araviq6-2.1.1.tar.gz (183.5 kB view details)

Uploaded Source

Built Distribution

araviq6-2.1.1-py3-none-any.whl (184.1 kB view details)

Uploaded Python 3

File details

Details for the file araviq6-2.1.1.tar.gz.

File metadata

  • Download URL: araviq6-2.1.1.tar.gz
  • Upload date:
  • Size: 183.5 kB
  • Tags: Source
  • Uploaded using Trusted Publishing? No
  • Uploaded via: twine/4.0.2 CPython/3.11.1

File hashes

Hashes for araviq6-2.1.1.tar.gz
Algorithm Hash digest
SHA256 b44540c19d1105c7aa15a3c5f851f8475ab8f44d8e96db895640d758257e64d5
MD5 8055a59bdc0734121e7ee546378a9e2e
BLAKE2b-256 eb65064e37923057129b11249846404f93ed71f9b53eee9c2499b865c6c18539

See more details on using hashes here.

File details

Details for the file araviq6-2.1.1-py3-none-any.whl.

File metadata

  • Download URL: araviq6-2.1.1-py3-none-any.whl
  • Upload date:
  • Size: 184.1 kB
  • Tags: Python 3
  • Uploaded using Trusted Publishing? No
  • Uploaded via: twine/4.0.2 CPython/3.11.1

File hashes

Hashes for araviq6-2.1.1-py3-none-any.whl
Algorithm Hash digest
SHA256 b46b7d2dc2d0929cbb5f2519105152c2300986ce4e2e96be717f9947a8e4a728
MD5 3260184df66e8e0515f99ede7eb39961
BLAKE2b-256 8c5cdccaa212971f49e0873455177acb0e61096a3da096762aed2aee74443f6b

See more details on using hashes here.

Supported by

AWS AWS Cloud computing and Security Sponsor Datadog Datadog Monitoring Fastly Fastly CDN Google Google Download Analytics Microsoft Microsoft PSF Sponsor Pingdom Pingdom Monitoring Sentry Sentry Error logging StatusPage StatusPage Status page