Skip to main content

Receiving video stream from multiple cameras (usb/ip) for further processing

Project description

Omniview

Система для одновременного просмотра и обработки потоков с нескольких камер (USB/IP) с возможностью интеграции в компьютерное зрение.

🚀 Возможности

  • Поддержка USB и IP-камер (через RTSP)
  • Автоматическое переподключение при обрыве связи
  • Настраиваемые параметры камер (разрешение, FPS)
  • Многопоточная обработка кадров
  • Гибкая система обратных вызовов для обработки видео
  • Готовый GUI для просмотра потоков
  • Конфигурирование через параметры конструктора

⚙️ Установка

  1. Клонируйте репозиторий:
git clone https://github.com/DIMFLIX/OmniView.git
cd OmniView
  1. Установите пакетный менеджер

  2. Установите зависимости:

uv sync
  1. Запустите базовый пример
python example.py

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

Базовый пример для USB камер

from omniview.managers import USBCameraManager


def frame_callback(camera_id, frame):
    # Your framing
    pass


if __name__ == "__main__":
    manager = USBCameraManager(
        show_gui=True,
        max_cameras=4,
        frame_callback=frame_callback
    )
    try:
        manager.start()
    except KeyboardInterrupt:
        manager.stop()

Базовый пример для IP камер

from omniview.managers import IPCameraManager


def frame_callback(camera_id, frame):
    # Your framing
    pass


if __name__ == "__main__":
    manager = IPCameraManager(
        show_gui=True,
        rtsp_urls=[
            "rtsp://admin:12345@192.168.0.1:9090",
        ],
        max_cameras=4,
        frame_callback=frame_callback
    )
    try:
        manager.start()
    except KeyboardInterrupt:
        manager.stop()

📚 API

Основные методы:

  • start() - запускает менеджер камер (блокирующий вызов)
  • stop() - корректно останавливает все потоки
  • process_frames() - возвращает словарь текущих кадров (ID: кадр)

Класс USBCameraManager

Параметры конструктора:

Параметр Тип По умолчанию Описание
show_gui bool True Показывать окна с видео
max_cameras int 10 Макс. количество камер
frame_width int 640 Ширина кадра
frame_height int 480 Высота кадра
fps int 30 Целевой FPS
min_uptime float 5.0 Мин. время работы (сек)
frame_callback function None Callback для обработки кадров
exit_keys tuple (ord('q'),27) Клавиши для выхода

Класс IPCameraManager

Параметры конструктора (Все те-же самые что у USBCameraManager, но с добавлением):

Параметр Тип По умолчанию Описание
rtsp_urls list[str] [] Список RTSP URL

🤝 Развитие проекта

Приветствуются:

  • Отчеты об ошибках
  • Pull requests
  • Идеи по улучшению
  • Примеры использования

📄 Лицензия

Проект распространяется под лицензией GNU GPL v3. Подробности см. в файле LICENSE.

Project details


Download files

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

Source Distribution

omniview-1.0.0.tar.gz (21.5 kB view details)

Uploaded Source

Built Distribution

If you're not sure about the file name format, learn more about wheel file names.

omniview-1.0.0-py3-none-any.whl (20.2 kB view details)

Uploaded Python 3

File details

Details for the file omniview-1.0.0.tar.gz.

File metadata

  • Download URL: omniview-1.0.0.tar.gz
  • Upload date:
  • Size: 21.5 kB
  • Tags: Source
  • Uploaded using Trusted Publishing? No
  • Uploaded via: twine/6.1.0 CPython/3.12.9

File hashes

Hashes for omniview-1.0.0.tar.gz
Algorithm Hash digest
SHA256 8355c74e0c623772e814a7c3b28aff8768a8d1d3ce71eff7f771ab3eb18f3da7
MD5 65e645c68434f570f8002370507d9d77
BLAKE2b-256 47d2315783a83e1aa72cd7b91451283c6b075bdbf7940327c82dc6437bd8af55

See more details on using hashes here.

File details

Details for the file omniview-1.0.0-py3-none-any.whl.

File metadata

  • Download URL: omniview-1.0.0-py3-none-any.whl
  • Upload date:
  • Size: 20.2 kB
  • Tags: Python 3
  • Uploaded using Trusted Publishing? No
  • Uploaded via: twine/6.1.0 CPython/3.12.9

File hashes

Hashes for omniview-1.0.0-py3-none-any.whl
Algorithm Hash digest
SHA256 878c2d7900e8b25998e44afc19d13b6b73cd6edece7441e54be892af55ab21ee
MD5 62d45d628d2acc7fa1d93d0f323d0d39
BLAKE2b-256 6e01839446cc90154cebef580b0314050e70f0abdfe2b413477e446413aa9483

See more details on using hashes here.

Supported by

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