Skip to content

Repository files navigation

KinnectCAM

Превращает Kinect для Xbox 360 в обычную веб-камеру Windows, которую видит любое приложение — Zoom, Discord, Teams, OBS, браузер и т.д. Плюс — GUI с превью картинки в реальном времени и набором программных улучшений изображения (яркость/контраст/гамма, шумоподавление, AI-апскейл разрешения на GPU).

Пример интерфейса

Зачем это нужно

Kinect для Xbox 360 — это неплохая RGB-камера (640×480), которая просто валяется у многих без дела, потому что Windows не умеет использовать её как веб-камеру "из коробки". Этот проект берёт видеопоток с Kinect, прогоняет через настраиваемый конвейер обработки изображения и отдаёт его в виртуальную веб-камеру (через OBS Virtual Camera), которую можно выбрать в любой программе как обычную камеру.

Возможности

  • Kinect как веб-камера — работает в любом приложении, которое умеет выбирать камеру
  • Живое превью в GUI-окне с показом текущей картинки
  • Ручные настройки в реальном времени:
    • Яркость
    • Контраст
    • Гамма-коррекция (особенно полезна в тёмной комнате — вытягивает детали лучше, чем обычная яркость)
    • Насыщенность
  • Программные улучшения (включаются чекбоксами, можно комбинировать):
    • CLAHE — адаптивное выравнивание контраста, подтягивает детали в тёмных и неравномерно освещённых сценах
    • Шумоподавление + резкость — убирает шум матрицы Kinect и компенсирует естественную мягкость картинки
    • AI-апскейл (Real-ESRGAN) — увеличивает разрешение с 640×480 до 1280×960 нейросетью в реальном времени (~30 FPS на GPU уровня RTX 3080), выглядит заметно лучше простого растягивания пикселей
  • Настройки применяются "на лету", без перезапуска

Как это устроено

Kinect ──USB──> KinectCapture.exe ──named pipe──> kinectcam_gui.py ──> OBS Virtual Camera
              (C#, Kinect SDK v1.8)      (Python, обработка + GUI)      (видят все приложения)
  • KinectCapture/ — маленькая программа на C# (.NET Framework 4.8), читает RGB-поток с Kinect через официальный Kinect for Windows SDK v1.8 и шлёт сырые кадры (BGRX, 640×480) в named pipe \\.\pipe\kinectcam.
  • kinectcam_gui.py — Python + PySide6 (Qt), читает кадры из pipe, прогоняет через конвейер обработки (яркость/контраст → CLAHE → шумоподавление → гамма → насыщенность → апскейл) и отправляет результат в виртуальную камеру через pyvirtualcam (бэкенд — OBS Virtual Camera).
  • ai_upscaler.py — облегчённая нейросеть Real-ESRGAN (realesr-general-x4v3, архитектура SRVGGNetCompact) на PyTorch/CUDA, прямой inference без лишних накладных расходов — только так удалось получить ~30 FPS вместо ~6-12 у стандартной обёртки библиотеки.

Требования

  • Windows 10/11
  • Kinect для Xbox 360 с фирменным адаптером питания (та чёрная коробочка с блоком питания + USB — без неё Windows увидит только мотор, без камеры и микрофона)
  • Видеокарта NVIDIA (для AI-апскейла; без неё остальные функции всё равно работают, но апскейл нужно будет выключить или он будет считаться на CPU очень медленно)
  • ~5 ГБ свободного места (PyTorch с CUDA — самая тяжёлая часть)
  • Права администратора (для установки драйверов Kinect SDK)

Установка с нуля

Шаг 1. Подключите Kinect

Воткните Kinect в USB через фирменный адаптер питания (не напрямую). Если у вас нет адаптера — без него камера и микрофон Kinect работать не будут, увидите только "Xbox NUI Motor" в диспетчере устройств.

Шаг 2. Установите Kinect for Windows SDK v1.8

Скачайте и установите официальный SDK (единственная версия, которая корректно работает с Kinect для Xbox 360 — не ставьте SDK 2.0, он для другого поколения устройств и с Xbox 360 Kinect конфликтует):

Скачать: https://www.microsoft.com/en-us/download/details.aspx?id=40278 (KinectSDK-v1.8-Setup.exe)

Запустите установщик от имени администратора. После установки переподключите Kinect (выдерните/воткните USB) и подождите минуту — Windows поставит драйверы. Проверьте в диспетчере устройств: должны появиться четыре устройства со статусом "Устройство работает нормально":

  • Kinect for Windows Device
  • Kinect for Windows Camera
  • Kinect for Windows Audio Array Control
  • Kinect for Windows Security Control

Если видите только "Xbox NUI Motor" (со значком ошибки) и больше ничего — почти наверняка стоит SDK не той версии или он не переустановился после переподключения устройства. Удалите Kinect SDK через "Установка и удаление программ", переустановите v1.8 и переподключите Kinect заново.

Шаг 3. Установите .NET SDK

Нужен для сборки программы захвата видео (KinectCapture.exe).

winget install Microsoft.DotNet.SDK.8

Откройте новый терминал после установки (чтобы подхватился PATH).

Шаг 4. Соберите KinectCapture.exe

cd KinectCapture
dotnet build

Готовый KinectCapture.exe появится в KinectCapture\bin\Debug\net48\.

Шаг 5. Установите OBS Studio

Он нужен только ради своего драйвера виртуальной камеры — сам OBS запускать не обязательно.

winget install OBSProject.OBSStudio

Шаг 6. Создайте окружение Python и поставьте PyTorch

Важно: используйте Python 3.11 (не 3.13!) — пакет basicsr, на котором держится AI-апскейл, ломается на более новых версиях Python из-за несовместимого способа чтения номера версии в своём setup.py.

py -3.11 -m venv .venv
.venv\Scripts\pip install --upgrade pip

Поставьте PyTorch с поддержкой CUDA — версия сборки зависит от вашей видеокарты и версии драйвера. Посмотрите точную команду на https://pytorch.org (раздел "Install PyTorch", выберите Windows / Pip / CUDA). Например, для CUDA 12.6:

.venv\Scripts\pip install torch --index-url https://download.pytorch.org/whl/cu126

Если видеокарты NVIDIA нет или ставить CUDA не хочется — можно поставить обычный torch без индекса, но тогда чекбокс AI-апскейла лучше не включать (будет очень медленно на CPU).

Шаг 7. Поставьте остальные зависимости

.venv\Scripts\pip install -r requirements.txt
.venv\Scripts\python fix_basicsr.py

Второй скрипт чинит совместимость библиотеки basicsr с современным torchvision (известный баг апстрима — иначе AI-апскейл не запустится).

Шаг 8. Скачайте модель для AI-апскейла

curl -L -o models\realesr-general-x4v3.pth https://github.com/xinntao/Real-ESRGAN/releases/download/v0.2.5.0/realesr-general-x4v3.pth

Шаг 9. Запуск

start_kinectcam.bat

Откроются два окна: KinectCapture (захват видео с Kinect) и GUI-окно KinnectCAM с превью и настройками. В любом приложении с выбором камеры (Zoom, Discord, OBS и т.д.) выберите камеру OBS Virtual Camera.

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

  • Ползунки Яркость / Контраст / Гамма / Насыщенность двигаются в реальном времени, результат сразу виден и в превью, и в самой веб-камере
  • CLAHE, Шумоподавление + резкость и AI-апскейл — независимые чекбоксы, можно включать в любой комбинации
  • Кнопка "Сбросить настройки" возвращает ползунки к значениям по умолчанию
  • Если Kinect не подключён или KinectCapture.exe ещё не запущен — GUI будет ждать подключения и покажет статус внизу окна

Известные проблемы

В диспетчере устройств только "Xbox NUI Motor", камеры нет. Не тот адаптер питания или не переустановился SDK — см. Шаг 1 и Шаг 2.

GUI открывается, но пишет ошибку про виртуальную камеру. Не запущен/не переустановлен драйвер OBS Virtual Camera — переустановите OBS Studio (Шаг 5).

AI-апскейл выдаёт ошибку или работает еле-еле (пара кадров в секунду). Скорее всего, PyTorch без поддержки CUDA (проверьте — при запуске Python import torch; torch.cuda.is_available() должно быть True), либо видеокарта не NVIDIA. Без CUDA просто не включайте этот чекбокс — остальные функции работают нормально и на CPU.

При установке basicsr падает с KeyError: '__version__'. Значит окружение создано не на Python 3.11, а на более новой версии — см. Шаг 6.

Пропадает звук/изображение после переподключения Kinect. KinectCapture.exe держит соединение с сенсором на весь один запуск и завершается при отключении клиента — просто перезапустите start_kinectcam.bat.

Структура проекта

KinnectCAM/
├── start_kinectcam.bat     — запуск обеих программ одной командой
├── run_gui.bat             — запуск только Python-GUI (использует .venv)
├── kinectcam_gui.py        — главное приложение: GUI, обработка кадров, виртуальная камера
├── ai_upscaler.py          — inference Real-ESRGAN (лёгкая модель, PyTorch/CUDA)
├── fix_basicsr.py          — патч известного бага basicsr/torchvision
├── requirements.txt        — Python-зависимости (кроме torch — его отдельно)
├── models/                 — сюда кладётся вес нейросети (см. models/README.md)
└── KinectCapture/          — C#-программа захвата видео с Kinect
    ├── Program.cs
    └── KinectCapture.csproj

Благодарности

About

Kinect для Xbox 360 как виртуальная веб-камера Windows с GUI, обработкой изображения и AI-апскейлом (Real-ESRGAN)

Resources

Stars

1 star

Watchers

0 watching

Forks

Releases

Packages

Contributors

Languages