motion-detector-g4


Namemotion-detector-g4 JSON
Version 1.2.0 PyPI version JSON
download
home_pagehttps://github.com/Genzo4/motion_detector
SummaryMotion Detector
upload_time2023-10-05 07:07:31
maintainer
docs_urlNone
authorGenzo
requires_python>=3.6
licenseMIT
keywords motiondetector motion_detector motion-detector opencv opencv-contrib-python g4
VCS
bugtrack_url
requirements No requirements were recorded.
Travis-CI No Travis.
coveralls test coverage No coveralls.
            ![Language](https://img.shields.io/badge/English-brigthgreen)

# Motion Detector

![PyPI](https://img.shields.io/pypi/v/motion-detector-g4)
![PyPI - License](https://img.shields.io/pypi/l/motion-detector-g4)
![PyPI - Python Version](https://img.shields.io/pypi/pyversions/motion-detector-g4)

Python module for comparing two frames from a video for motion.

***

## Installation

### Package Installation from PyPi

```bash
$ pip install motion-detector-g4
```

### Package Installation from Source Code

The source code is available on [GitHub](https://github.com/Genzo4/motion_detector).  
Download and install the package:

```bash
$ git clone https://github.com/Genzo4/motion_detector
$ cd motion_detector
$ pip install -r requirements.txt
$ pip install .
```

***

## Basic usage

Import:
```python
from motion_detector_g4 import MotionDetector
```

Create an instance of the motion detector. You can specify additional options:
- min_area - minimum tracked change size (blob size).
  Default value: 4000.
- max_area - maximum tracked change size (blob size).
  Default value: 150000.
- noise_size - the maximum size of the removed noise.
  Default value: 10.
- debug - debug mode. If it is enabled, intermediate frames are created, 
  showing the process of processing.
  Default value: False.

```python
md = MotionDetector(min_area=4000, max_area=150000, noise_size=10, debug=False)
```

The module uses the following algorithm:
1. The first frame is being processed (method apply_first_frame).
![Img. 1](https://github.com/Genzo4/motion_detector/raw/main/images/01_frame_1.png "Img. 1 - First frame")
2. The next frame is being processed (method check_motion):
![Img. 2](https://github.com/Genzo4/motion_detector/raw/main/images/01_frame_2.png "Img. 2 - Next frame")
   - the first frame is subtracted from this frame using the module BackgroundSubtractorMOG2
     from the library OpenCV. If debug mode is enabled, then a file is created with an additional 
     extension "mask" with the result of the module.  
     ![Img. 3](https://github.com/Genzo4/motion_detector/raw/main/images/01_frame_2.mask.png "Img. 3 - Removed the background")
   - remove noise using the morphologyEx module from the OpenCV library. This process 
     configured using the noise_size parameter. If debug mode is enabled, then 
     a file is created with the additional extension "clear" with the result of the module's operation.
     ![Img. 4](https://github.com/Genzo4/motion_detector/raw/main/images/01_frame_2.clear.png "Img. 4 - Remove noise")
   - looking for areas of motion (blobs) larger than min_area but smaller than max_area. If debug mode is enabled, then 
     files are created with the extension "blobs" and "blobs2" with the result of the module's operation 
     (found areas are circled in red).
     ![Img. 5](https://github.com/Genzo4/motion_detector/raw/main/images/01_frame_2.blobs.png "Img. 5 - Found areas of interest")
     ![Img. 6](https://github.com/Genzo4/motion_detector/raw/main/images/01_frame_2.blobs2.png "Img. 6 - Found areas of interest")

See the example.py file for an example of usage.

***

![Language](https://img.shields.io/badge/Русский-brigthgreen)

# Motion Detector

![PyPI](https://img.shields.io/pypi/v/motion-detector-g4)
![PyPI - License](https://img.shields.io/pypi/l/motion-detector-g4)
![PyPI - Python Version](https://img.shields.io/pypi/pyversions/motion-detector-g4)

Python модуль для сравнения двух кадров из видеозаписи на предмет наличия движения в них.

***

## Установка

### Установка пакета с PyPi

```bash
$ pip install motion-detector-g4
```

### Установка пакета из исходного кода

Исходный код размещается на [GitHub](https://github.com/Genzo4/motion_detector).  
Скачайте его и установите пакет:

```bash
$ git clone https://github.com/Genzo4/motion_detector
$ cd motion_detector
$ pip install -r requirements.txt
$ pip install .
```

***

## Использование

Подключаем:
```python
from motion_detector_g4 import MotionDetector
```

Создаём экземпляр детектора движения. Можно указать дополнительные параметры:
- min_area - минимальный размер отслеживаемого изменения (размера blob'а).
  Значение по умолчанию: 4000.
- max_area - максимальный размер отслеживаемого изменения (размера blob'а).
  Значение по умолчанию: 150000.
- noise_size - максимальный размер удаляемого "шума".
  Значение по умолчанию: 10.
- debug - режим отладки. Если его включить, то создаются промежуточные кадры,
  показывающие процесс обработки.
  Значение по умолчанию: False.

```python
md = MotionDetector(min_area=4000, max_area=150000, noise_size=10, debug=False)
```

В модуле используется следующий алгоритм:
1. Подаётся на обработку первый кадр (метод apply_first_frame).
![Рис. 1](https://github.com/Genzo4/motion_detector/raw/main/images/01_frame_1.png "Рис. 1 - Первый кадр")
2. Подаётся на обработку следующий кадр (метод check_motion):
![Рис. 2](https://github.com/Genzo4/motion_detector/raw/main/images/01_frame_2.png "Рис. 2 - Следующий кадр")
   - из этого кадра "вычитается" первый кадр с помощью модуля BackgroundSubtractorMOG2
     из библиотеки OpenCV. Если включён режим отладки, то создаётся файл с добавочным
     расширением "mask" с результатом работы модуля.  
     ![Рис. 3](https://github.com/Genzo4/motion_detector/raw/main/images/01_frame_2.mask.png "Рис. 3 - Убрали фон")
   - удаляем "шум" с помощью модуля morphologyEx из библиотеки OpenCV. Данный процесс
     настраивается с помощью параметра noise_size. Если включён режим отладки, то
     создаётся файл с добавочным расширением "clear" с результатом работы модуля.
     ![Рис. 4](https://github.com/Genzo4/motion_detector/raw/main/images/01_frame_2.clear.png "Рис. 4 - Очистили от шума")
   - ищем области движения (blob'ы) размером больше min_area, но меньше max_area. Если включён режим отладки, то
     создаются файлы с добавочным расширением "blobs" и "blobs2" с результатом работы модуля 
     (найденные области обводятся красными кругами).
     ![Рис. 5](https://github.com/Genzo4/motion_detector/raw/main/images/01_frame_2.blobs.png "Рис. 5 - Нашли интересующие области движения")
     ![Рис. 6](https://github.com/Genzo4/motion_detector/raw/main/images/01_frame_2.blobs2.png "Рис. 6 - Нашли интересующие области движения")

Пример использования см. в файле example.py

            

Raw data

            {
    "_id": null,
    "home_page": "https://github.com/Genzo4/motion_detector",
    "name": "motion-detector-g4",
    "maintainer": "",
    "docs_url": null,
    "requires_python": ">=3.6",
    "maintainer_email": "",
    "keywords": "motiondetector,motion_detector,motion-detector,opencv,opencv-contrib-python,g4",
    "author": "Genzo",
    "author_email": "genzo@bk.ru",
    "download_url": "https://files.pythonhosted.org/packages/5d/5e/d917f755401aa561fab851a63066eade85b5f245a082eab8120605982377/motion_detector_g4-1.2.0.tar.gz",
    "platform": null,
    "description": "![Language](https://img.shields.io/badge/English-brigthgreen)\r\n\r\n# Motion Detector\r\n\r\n![PyPI](https://img.shields.io/pypi/v/motion-detector-g4)\r\n![PyPI - License](https://img.shields.io/pypi/l/motion-detector-g4)\r\n![PyPI - Python Version](https://img.shields.io/pypi/pyversions/motion-detector-g4)\r\n\r\nPython module for comparing two frames from a video for motion.\r\n\r\n***\r\n\r\n## Installation\r\n\r\n### Package Installation from PyPi\r\n\r\n```bash\r\n$ pip install motion-detector-g4\r\n```\r\n\r\n### Package Installation from Source Code\r\n\r\nThe source code is available on [GitHub](https://github.com/Genzo4/motion_detector).  \r\nDownload and install the package:\r\n\r\n```bash\r\n$ git clone https://github.com/Genzo4/motion_detector\r\n$ cd motion_detector\r\n$ pip install -r requirements.txt\r\n$ pip install .\r\n```\r\n\r\n***\r\n\r\n## Basic usage\r\n\r\nImport:\r\n```python\r\nfrom motion_detector_g4 import MotionDetector\r\n```\r\n\r\nCreate an instance of the motion detector. You can specify additional options:\r\n- min_area - minimum tracked change size (blob size).\r\n  Default value: 4000.\r\n- max_area - maximum tracked change size (blob size).\r\n  Default value: 150000.\r\n- noise_size - the maximum size of the removed noise.\r\n  Default value: 10.\r\n- debug - debug mode. If it is enabled, intermediate frames are created, \r\n  showing the process of processing.\r\n  Default value: False.\r\n\r\n```python\r\nmd = MotionDetector(min_area=4000, max_area=150000, noise_size=10, debug=False)\r\n```\r\n\r\nThe module uses the following algorithm:\r\n1. The first frame is being processed (method apply_first_frame).\r\n![Img. 1](https://github.com/Genzo4/motion_detector/raw/main/images/01_frame_1.png \"Img. 1 - First frame\")\r\n2. The next frame is being processed (method check_motion):\r\n![Img. 2](https://github.com/Genzo4/motion_detector/raw/main/images/01_frame_2.png \"Img. 2 - Next frame\")\r\n   - the first frame is subtracted from this frame using the module BackgroundSubtractorMOG2\r\n     from the library OpenCV. If debug mode is enabled, then a file is created with an additional \r\n     extension \"mask\" with the result of the module.  \r\n     ![Img. 3](https://github.com/Genzo4/motion_detector/raw/main/images/01_frame_2.mask.png \"Img. 3 - Removed the background\")\r\n   - remove noise using the morphologyEx module from the OpenCV library. This process \r\n     configured using the noise_size parameter. If debug mode is enabled, then \r\n     a file is created with the additional extension \"clear\" with the result of the module's operation.\r\n     ![Img. 4](https://github.com/Genzo4/motion_detector/raw/main/images/01_frame_2.clear.png \"Img. 4 - Remove noise\")\r\n   - looking for areas of motion (blobs) larger than min_area but smaller than max_area. If debug mode is enabled, then \r\n     files are created with the extension \"blobs\" and \"blobs2\" with the result of the module's operation \r\n     (found areas are circled in red).\r\n     ![Img. 5](https://github.com/Genzo4/motion_detector/raw/main/images/01_frame_2.blobs.png \"Img. 5 - Found areas of interest\")\r\n     ![Img. 6](https://github.com/Genzo4/motion_detector/raw/main/images/01_frame_2.blobs2.png \"Img. 6 - Found areas of interest\")\r\n\r\nSee the example.py file for an example of usage.\r\n\r\n***\r\n\r\n![Language](https://img.shields.io/badge/\u0420\u0443\u0441\u0441\u043a\u0438\u0439-brigthgreen)\r\n\r\n# Motion Detector\r\n\r\n![PyPI](https://img.shields.io/pypi/v/motion-detector-g4)\r\n![PyPI - License](https://img.shields.io/pypi/l/motion-detector-g4)\r\n![PyPI - Python Version](https://img.shields.io/pypi/pyversions/motion-detector-g4)\r\n\r\nPython \u043c\u043e\u0434\u0443\u043b\u044c \u0434\u043b\u044f \u0441\u0440\u0430\u0432\u043d\u0435\u043d\u0438\u044f \u0434\u0432\u0443\u0445 \u043a\u0430\u0434\u0440\u043e\u0432 \u0438\u0437 \u0432\u0438\u0434\u0435\u043e\u0437\u0430\u043f\u0438\u0441\u0438 \u043d\u0430 \u043f\u0440\u0435\u0434\u043c\u0435\u0442 \u043d\u0430\u043b\u0438\u0447\u0438\u044f \u0434\u0432\u0438\u0436\u0435\u043d\u0438\u044f \u0432 \u043d\u0438\u0445.\r\n\r\n***\r\n\r\n## \u0423\u0441\u0442\u0430\u043d\u043e\u0432\u043a\u0430\r\n\r\n### \u0423\u0441\u0442\u0430\u043d\u043e\u0432\u043a\u0430 \u043f\u0430\u043a\u0435\u0442\u0430 \u0441 PyPi\r\n\r\n```bash\r\n$ pip install motion-detector-g4\r\n```\r\n\r\n### \u0423\u0441\u0442\u0430\u043d\u043e\u0432\u043a\u0430 \u043f\u0430\u043a\u0435\u0442\u0430 \u0438\u0437 \u0438\u0441\u0445\u043e\u0434\u043d\u043e\u0433\u043e \u043a\u043e\u0434\u0430\r\n\r\n\u0418\u0441\u0445\u043e\u0434\u043d\u044b\u0439 \u043a\u043e\u0434 \u0440\u0430\u0437\u043c\u0435\u0449\u0430\u0435\u0442\u0441\u044f \u043d\u0430 [GitHub](https://github.com/Genzo4/motion_detector).  \r\n\u0421\u043a\u0430\u0447\u0430\u0439\u0442\u0435 \u0435\u0433\u043e \u0438 \u0443\u0441\u0442\u0430\u043d\u043e\u0432\u0438\u0442\u0435 \u043f\u0430\u043a\u0435\u0442:\r\n\r\n```bash\r\n$ git clone https://github.com/Genzo4/motion_detector\r\n$ cd motion_detector\r\n$ pip install -r requirements.txt\r\n$ pip install .\r\n```\r\n\r\n***\r\n\r\n## \u0418\u0441\u043f\u043e\u043b\u044c\u0437\u043e\u0432\u0430\u043d\u0438\u0435\r\n\r\n\u041f\u043e\u0434\u043a\u043b\u044e\u0447\u0430\u0435\u043c:\r\n```python\r\nfrom motion_detector_g4 import MotionDetector\r\n```\r\n\r\n\u0421\u043e\u0437\u0434\u0430\u0451\u043c \u044d\u043a\u0437\u0435\u043c\u043f\u043b\u044f\u0440 \u0434\u0435\u0442\u0435\u043a\u0442\u043e\u0440\u0430 \u0434\u0432\u0438\u0436\u0435\u043d\u0438\u044f. \u041c\u043e\u0436\u043d\u043e \u0443\u043a\u0430\u0437\u0430\u0442\u044c \u0434\u043e\u043f\u043e\u043b\u043d\u0438\u0442\u0435\u043b\u044c\u043d\u044b\u0435 \u043f\u0430\u0440\u0430\u043c\u0435\u0442\u0440\u044b:\r\n- min_area - \u043c\u0438\u043d\u0438\u043c\u0430\u043b\u044c\u043d\u044b\u0439 \u0440\u0430\u0437\u043c\u0435\u0440 \u043e\u0442\u0441\u043b\u0435\u0436\u0438\u0432\u0430\u0435\u043c\u043e\u0433\u043e \u0438\u0437\u043c\u0435\u043d\u0435\u043d\u0438\u044f (\u0440\u0430\u0437\u043c\u0435\u0440\u0430 blob'\u0430).\r\n  \u0417\u043d\u0430\u0447\u0435\u043d\u0438\u0435 \u043f\u043e \u0443\u043c\u043e\u043b\u0447\u0430\u043d\u0438\u044e: 4000.\r\n- max_area - \u043c\u0430\u043a\u0441\u0438\u043c\u0430\u043b\u044c\u043d\u044b\u0439 \u0440\u0430\u0437\u043c\u0435\u0440 \u043e\u0442\u0441\u043b\u0435\u0436\u0438\u0432\u0430\u0435\u043c\u043e\u0433\u043e \u0438\u0437\u043c\u0435\u043d\u0435\u043d\u0438\u044f (\u0440\u0430\u0437\u043c\u0435\u0440\u0430 blob'\u0430).\r\n  \u0417\u043d\u0430\u0447\u0435\u043d\u0438\u0435 \u043f\u043e \u0443\u043c\u043e\u043b\u0447\u0430\u043d\u0438\u044e: 150000.\r\n- noise_size - \u043c\u0430\u043a\u0441\u0438\u043c\u0430\u043b\u044c\u043d\u044b\u0439 \u0440\u0430\u0437\u043c\u0435\u0440 \u0443\u0434\u0430\u043b\u044f\u0435\u043c\u043e\u0433\u043e \"\u0448\u0443\u043c\u0430\".\r\n  \u0417\u043d\u0430\u0447\u0435\u043d\u0438\u0435 \u043f\u043e \u0443\u043c\u043e\u043b\u0447\u0430\u043d\u0438\u044e: 10.\r\n- debug - \u0440\u0435\u0436\u0438\u043c \u043e\u0442\u043b\u0430\u0434\u043a\u0438. \u0415\u0441\u043b\u0438 \u0435\u0433\u043e \u0432\u043a\u043b\u044e\u0447\u0438\u0442\u044c, \u0442\u043e \u0441\u043e\u0437\u0434\u0430\u044e\u0442\u0441\u044f \u043f\u0440\u043e\u043c\u0435\u0436\u0443\u0442\u043e\u0447\u043d\u044b\u0435 \u043a\u0430\u0434\u0440\u044b,\r\n  \u043f\u043e\u043a\u0430\u0437\u044b\u0432\u0430\u044e\u0449\u0438\u0435 \u043f\u0440\u043e\u0446\u0435\u0441\u0441 \u043e\u0431\u0440\u0430\u0431\u043e\u0442\u043a\u0438.\r\n  \u0417\u043d\u0430\u0447\u0435\u043d\u0438\u0435 \u043f\u043e \u0443\u043c\u043e\u043b\u0447\u0430\u043d\u0438\u044e: False.\r\n\r\n```python\r\nmd = MotionDetector(min_area=4000, max_area=150000, noise_size=10, debug=False)\r\n```\r\n\r\n\u0412 \u043c\u043e\u0434\u0443\u043b\u0435 \u0438\u0441\u043f\u043e\u043b\u044c\u0437\u0443\u0435\u0442\u0441\u044f \u0441\u043b\u0435\u0434\u0443\u044e\u0449\u0438\u0439 \u0430\u043b\u0433\u043e\u0440\u0438\u0442\u043c:\r\n1. \u041f\u043e\u0434\u0430\u0451\u0442\u0441\u044f \u043d\u0430 \u043e\u0431\u0440\u0430\u0431\u043e\u0442\u043a\u0443 \u043f\u0435\u0440\u0432\u044b\u0439 \u043a\u0430\u0434\u0440 (\u043c\u0435\u0442\u043e\u0434 apply_first_frame).\r\n![\u0420\u0438\u0441. 1](https://github.com/Genzo4/motion_detector/raw/main/images/01_frame_1.png \"\u0420\u0438\u0441. 1 - \u041f\u0435\u0440\u0432\u044b\u0439 \u043a\u0430\u0434\u0440\")\r\n2. \u041f\u043e\u0434\u0430\u0451\u0442\u0441\u044f \u043d\u0430 \u043e\u0431\u0440\u0430\u0431\u043e\u0442\u043a\u0443 \u0441\u043b\u0435\u0434\u0443\u044e\u0449\u0438\u0439 \u043a\u0430\u0434\u0440 (\u043c\u0435\u0442\u043e\u0434 check_motion):\r\n![\u0420\u0438\u0441. 2](https://github.com/Genzo4/motion_detector/raw/main/images/01_frame_2.png \"\u0420\u0438\u0441. 2 - \u0421\u043b\u0435\u0434\u0443\u044e\u0449\u0438\u0439 \u043a\u0430\u0434\u0440\")\r\n   - \u0438\u0437 \u044d\u0442\u043e\u0433\u043e \u043a\u0430\u0434\u0440\u0430 \"\u0432\u044b\u0447\u0438\u0442\u0430\u0435\u0442\u0441\u044f\" \u043f\u0435\u0440\u0432\u044b\u0439 \u043a\u0430\u0434\u0440 \u0441 \u043f\u043e\u043c\u043e\u0449\u044c\u044e \u043c\u043e\u0434\u0443\u043b\u044f BackgroundSubtractorMOG2\r\n     \u0438\u0437 \u0431\u0438\u0431\u043b\u0438\u043e\u0442\u0435\u043a\u0438 OpenCV. \u0415\u0441\u043b\u0438 \u0432\u043a\u043b\u044e\u0447\u0451\u043d \u0440\u0435\u0436\u0438\u043c \u043e\u0442\u043b\u0430\u0434\u043a\u0438, \u0442\u043e \u0441\u043e\u0437\u0434\u0430\u0451\u0442\u0441\u044f \u0444\u0430\u0439\u043b \u0441 \u0434\u043e\u0431\u0430\u0432\u043e\u0447\u043d\u044b\u043c\r\n     \u0440\u0430\u0441\u0448\u0438\u0440\u0435\u043d\u0438\u0435\u043c \"mask\" \u0441 \u0440\u0435\u0437\u0443\u043b\u044c\u0442\u0430\u0442\u043e\u043c \u0440\u0430\u0431\u043e\u0442\u044b \u043c\u043e\u0434\u0443\u043b\u044f.  \r\n     ![\u0420\u0438\u0441. 3](https://github.com/Genzo4/motion_detector/raw/main/images/01_frame_2.mask.png \"\u0420\u0438\u0441. 3 - \u0423\u0431\u0440\u0430\u043b\u0438 \u0444\u043e\u043d\")\r\n   - \u0443\u0434\u0430\u043b\u044f\u0435\u043c \"\u0448\u0443\u043c\" \u0441 \u043f\u043e\u043c\u043e\u0449\u044c\u044e \u043c\u043e\u0434\u0443\u043b\u044f morphologyEx \u0438\u0437 \u0431\u0438\u0431\u043b\u0438\u043e\u0442\u0435\u043a\u0438 OpenCV. \u0414\u0430\u043d\u043d\u044b\u0439 \u043f\u0440\u043e\u0446\u0435\u0441\u0441\r\n     \u043d\u0430\u0441\u0442\u0440\u0430\u0438\u0432\u0430\u0435\u0442\u0441\u044f \u0441 \u043f\u043e\u043c\u043e\u0449\u044c\u044e \u043f\u0430\u0440\u0430\u043c\u0435\u0442\u0440\u0430 noise_size. \u0415\u0441\u043b\u0438 \u0432\u043a\u043b\u044e\u0447\u0451\u043d \u0440\u0435\u0436\u0438\u043c \u043e\u0442\u043b\u0430\u0434\u043a\u0438, \u0442\u043e\r\n     \u0441\u043e\u0437\u0434\u0430\u0451\u0442\u0441\u044f \u0444\u0430\u0439\u043b \u0441 \u0434\u043e\u0431\u0430\u0432\u043e\u0447\u043d\u044b\u043c \u0440\u0430\u0441\u0448\u0438\u0440\u0435\u043d\u0438\u0435\u043c \"clear\" \u0441 \u0440\u0435\u0437\u0443\u043b\u044c\u0442\u0430\u0442\u043e\u043c \u0440\u0430\u0431\u043e\u0442\u044b \u043c\u043e\u0434\u0443\u043b\u044f.\r\n     ![\u0420\u0438\u0441. 4](https://github.com/Genzo4/motion_detector/raw/main/images/01_frame_2.clear.png \"\u0420\u0438\u0441. 4 - \u041e\u0447\u0438\u0441\u0442\u0438\u043b\u0438 \u043e\u0442 \u0448\u0443\u043c\u0430\")\r\n   - \u0438\u0449\u0435\u043c \u043e\u0431\u043b\u0430\u0441\u0442\u0438 \u0434\u0432\u0438\u0436\u0435\u043d\u0438\u044f (blob'\u044b) \u0440\u0430\u0437\u043c\u0435\u0440\u043e\u043c \u0431\u043e\u043b\u044c\u0448\u0435 min_area, \u043d\u043e \u043c\u0435\u043d\u044c\u0448\u0435 max_area. \u0415\u0441\u043b\u0438 \u0432\u043a\u043b\u044e\u0447\u0451\u043d \u0440\u0435\u0436\u0438\u043c \u043e\u0442\u043b\u0430\u0434\u043a\u0438, \u0442\u043e\r\n     \u0441\u043e\u0437\u0434\u0430\u044e\u0442\u0441\u044f \u0444\u0430\u0439\u043b\u044b \u0441 \u0434\u043e\u0431\u0430\u0432\u043e\u0447\u043d\u044b\u043c \u0440\u0430\u0441\u0448\u0438\u0440\u0435\u043d\u0438\u0435\u043c \"blobs\" \u0438 \"blobs2\" \u0441 \u0440\u0435\u0437\u0443\u043b\u044c\u0442\u0430\u0442\u043e\u043c \u0440\u0430\u0431\u043e\u0442\u044b \u043c\u043e\u0434\u0443\u043b\u044f \r\n     (\u043d\u0430\u0439\u0434\u0435\u043d\u043d\u044b\u0435 \u043e\u0431\u043b\u0430\u0441\u0442\u0438 \u043e\u0431\u0432\u043e\u0434\u044f\u0442\u0441\u044f \u043a\u0440\u0430\u0441\u043d\u044b\u043c\u0438 \u043a\u0440\u0443\u0433\u0430\u043c\u0438).\r\n     ![\u0420\u0438\u0441. 5](https://github.com/Genzo4/motion_detector/raw/main/images/01_frame_2.blobs.png \"\u0420\u0438\u0441. 5 - \u041d\u0430\u0448\u043b\u0438 \u0438\u043d\u0442\u0435\u0440\u0435\u0441\u0443\u044e\u0449\u0438\u0435 \u043e\u0431\u043b\u0430\u0441\u0442\u0438 \u0434\u0432\u0438\u0436\u0435\u043d\u0438\u044f\")\r\n     ![\u0420\u0438\u0441. 6](https://github.com/Genzo4/motion_detector/raw/main/images/01_frame_2.blobs2.png \"\u0420\u0438\u0441. 6 - \u041d\u0430\u0448\u043b\u0438 \u0438\u043d\u0442\u0435\u0440\u0435\u0441\u0443\u044e\u0449\u0438\u0435 \u043e\u0431\u043b\u0430\u0441\u0442\u0438 \u0434\u0432\u0438\u0436\u0435\u043d\u0438\u044f\")\r\n\r\n\u041f\u0440\u0438\u043c\u0435\u0440 \u0438\u0441\u043f\u043e\u043b\u044c\u0437\u043e\u0432\u0430\u043d\u0438\u044f \u0441\u043c. \u0432 \u0444\u0430\u0439\u043b\u0435 example.py\r\n",
    "bugtrack_url": null,
    "license": "MIT",
    "summary": "Motion Detector",
    "version": "1.2.0",
    "project_urls": {
        "Bug Tracker": "https://github.com/Genzo4/motion_detector/issues",
        "Homepage": "https://github.com/Genzo4/motion_detector"
    },
    "split_keywords": [
        "motiondetector",
        "motion_detector",
        "motion-detector",
        "opencv",
        "opencv-contrib-python",
        "g4"
    ],
    "urls": [
        {
            "comment_text": "",
            "digests": {
                "blake2b_256": "313ebd1af5b69f2ef23fb632138b9aa694adf013dec4c1ec927b23e6ad912517",
                "md5": "38b2f39ea18d4b7aae33c5b574badeb2",
                "sha256": "15a5174ea137cf3c158c6981cf185f0f9b028186ec7e48a1ca1e7c1f3f43d444"
            },
            "downloads": -1,
            "filename": "motion_detector_g4-1.2.0-py3-none-any.whl",
            "has_sig": false,
            "md5_digest": "38b2f39ea18d4b7aae33c5b574badeb2",
            "packagetype": "bdist_wheel",
            "python_version": "py3",
            "requires_python": ">=3.6",
            "size": 6845,
            "upload_time": "2023-10-05T07:07:25",
            "upload_time_iso_8601": "2023-10-05T07:07:25.873902Z",
            "url": "https://files.pythonhosted.org/packages/31/3e/bd1af5b69f2ef23fb632138b9aa694adf013dec4c1ec927b23e6ad912517/motion_detector_g4-1.2.0-py3-none-any.whl",
            "yanked": false,
            "yanked_reason": null
        },
        {
            "comment_text": "",
            "digests": {
                "blake2b_256": "5d5ed917f755401aa561fab851a63066eade85b5f245a082eab8120605982377",
                "md5": "2f48c3aa9e3958b58e56ebc70e5e1d8b",
                "sha256": "c4f77acfe11fbfbda733bc60494daeb72837926e25a201047e5f4f27b5aa55c5"
            },
            "downloads": -1,
            "filename": "motion_detector_g4-1.2.0.tar.gz",
            "has_sig": false,
            "md5_digest": "2f48c3aa9e3958b58e56ebc70e5e1d8b",
            "packagetype": "sdist",
            "python_version": "source",
            "requires_python": ">=3.6",
            "size": 8396,
            "upload_time": "2023-10-05T07:07:31",
            "upload_time_iso_8601": "2023-10-05T07:07:31.059926Z",
            "url": "https://files.pythonhosted.org/packages/5d/5e/d917f755401aa561fab851a63066eade85b5f245a082eab8120605982377/motion_detector_g4-1.2.0.tar.gz",
            "yanked": false,
            "yanked_reason": null
        }
    ],
    "upload_time": "2023-10-05 07:07:31",
    "github": true,
    "gitlab": false,
    "bitbucket": false,
    "codeberg": false,
    "github_user": "Genzo4",
    "github_project": "motion_detector",
    "travis_ci": false,
    "coveralls": false,
    "github_actions": false,
    "requirements": [],
    "lcname": "motion-detector-g4"
}
        
Elapsed time: 1.79969s