Package for video display with OpenCV-Python and PySide6
Project description
Python package which combines OpenCV-Python and PySide6.
Introduction
PySide6 provides powerful tools to acquire video stream from file or device, and to display it on GUI.
cv2 is a de facto standard module for image analysis with Python.
It is natural to process the image with cv2 and display it using PySide6.
cv2PySide6 is a package to help build the video frame pipeline for this purpose.
It provides the object to convert PySide6.QVideoFrame to numpy.ndarray, and widget to directly display the array.
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 making PySide6 unavailable.
cv2PySide6 can be installed using pip.
$ pip install cv2PySide6
How to use
User can construct a pipeline which converts QVideoFrame to ndarray, performs any desired processing and displays to the widget.
Video display pipeline
QVideoFrame to ndarray
QVideoFrame is acquired from media file (PySide6.QMediaPlayer) or camera capture session (PySide6.QMediaCaptureSession) by setting PySide6.QVideoSink to them and listening to QVideoSink.videoFrameChanged signal.
To convert it, pass the video frame cv2PySide6.FrameToArrayConverter and listen to FrameToArrayConverter.arrayChanged signal.
(Note) If you want to convert a single
PySide6.QImagetondarray, qimage2ndarray package provides handy functions.
Displaying ndarray
cv2PySide6.NDArrayLabel is a widget to directly display ndarray.
It can also scale the image with respect to the widget size, and user can select the scaling mode.
Convenience classes
For convenience, cv2PySide6 provides NDArrayVideoPlayer and NDArrayMediaCaptureSession which inherits their PySide6 counterparts and emits arrayChanged signal.
NDArrayVideoPlayerWidget and NDArrayCameraWidget are the minimal implementation to display the video stream with them.
However, time-consuming image processing will block the GUI with these classes because they use a single thread. To build multithread pipeline, refer to the examples and build the pipeline yourself.
Examples
Use cases with multithreading are provided in examples directory. They can be found in documentation as well.
Documentation
Documentation can be found on Read the Docs:
If you want to build the document yourself, clone the source code and install with [doc] option.
Go to doc directory and build.
$ pip install cv2PySide6[doc]
$ cd doc
$ make html
Project details
Release history Release notifications | RSS feed
Download files
Download the file for your platform. If you're not sure which to choose, learn more about installing packages.
Source Distribution
Built Distribution
Filter files by name, interpreter, ABI, and platform.
If you're not sure about the file name format, learn more about wheel file names.
Copy a direct link to the current filters
File details
Details for the file cv2PySide6-3.1.0.tar.gz.
File metadata
- Download URL: cv2PySide6-3.1.0.tar.gz
- Upload date:
- Size: 406.1 kB
- Tags: Source
- Uploaded using Trusted Publishing? No
- Uploaded via: twine/4.0.1 CPython/3.10.4
File hashes
| Algorithm | Hash digest | |
|---|---|---|
| SHA256 |
c6dc9bd2f818beb4eb24ac829ae13eb357223c44be2706cf28640eeaffd53053
|
|
| MD5 |
a6c035f60ac2fb0b6428a8aad081e3b5
|
|
| BLAKE2b-256 |
bcb2976487ca3335bef1bb54b4864498e4a08e4bae5068fc5fc4dee1d0432d1c
|
File details
Details for the file cv2PySide6-3.1.0-py3-none-any.whl.
File metadata
- Download URL: cv2PySide6-3.1.0-py3-none-any.whl
- Upload date:
- Size: 406.9 kB
- Tags: Python 3
- Uploaded using Trusted Publishing? No
- Uploaded via: twine/4.0.1 CPython/3.10.4
File hashes
| Algorithm | Hash digest | |
|---|---|---|
| SHA256 |
756464b802e28947abebe34fdbab6e9fbb07e30c43da1ddd5a4713ce63e4807e
|
|
| MD5 |
3651fb272a7050695dcb8430b74b320c
|
|
| BLAKE2b-256 |
c95b4807106c35a26be6dc353c281bc9f8c2c6c90514726baec67eba9d95d1d9
|