Ecosyste.ms: Awesome
An open API service indexing awesome lists of open source software.
https://github.com/jss95/cv2pyside6
Python package to display video in GUI using OpenCV-Python and PySide6
https://github.com/jss95/cv2pyside6
opencv pyside6 python
Last synced: 26 days ago
JSON representation
Python package to display video in GUI using OpenCV-Python and PySide6
- Host: GitHub
- URL: https://github.com/jss95/cv2pyside6
- Owner: JSS95
- License: lgpl-3.0
- Created: 2021-12-27T17:28:33.000Z (almost 3 years ago)
- Default Branch: master
- Last Pushed: 2024-03-05T03:01:48.000Z (8 months ago)
- Last Synced: 2024-10-11T16:23:01.761Z (26 days ago)
- Topics: opencv, pyside6, python
- Language: Python
- Homepage:
- Size: 659 KB
- Stars: 7
- Watchers: 1
- Forks: 1
- Open Issues: 0
-
Metadata Files:
- Readme: README.md
- License: LICENSE.txt
Awesome Lists containing this project
README
# cv2PySide6 = cv2 + PySide6
## :warning: Deprecated
[![Deprecated](https://img.shields.io/badge/deprecated-red)](https://github.com/JSS95/cv2PySide6)
The cv2PySide6 project is deprecated. Use [AraViQ6](https://pypi.org/project/araviq6/) instead.
---
Python package which combines [OpenCV-Python](https://pypi.org/project/opencv-python/) and [PySide6](https://pypi.org/project/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.QImage` to `ndarray`, [qimage2ndarray](https://pypi.org/project/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](https://github.com/JSS95/cv2PySide6/tree/master/cv2PySide6/examples) directory.
They can be found in documentation as well.## Documentation
Documentation can be found on Read the Docs:
> https://cv2pyside6.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.```
$ pip install cv2PySide6[doc]
$ cd doc
$ make html
```