Skip to content
Aleksandr Kireev edited this page Feb 8, 2026 · 17 revisions

CVCounter Wiki

Добро пожаловать в документацию по проекту CVCounter!

Описание проекта

CVCounter — это мини-вебсайт, который позволяет отслеживать количество объектов на видео, через веб-интерфейс. Проект создан как простой и удобный инструмент для мониторинга потоков объектов (например, вход и выход или конвейер).

Это решение не требует установки дополнительного ПО на стороне клиента и работает на любых устройствах с браузером. Реализовано три вида просмотра: основной вид с видео, текстовый вид и текстовый вид с двумя счетчиками. Проект задуман как легковесное и нетребовательное к ресурсам решение, особенно если не использовать режим с видео.

Основные функции:

  • Веб-интерфейс для отображения количества объектов
  • Просмотр видео с результатом распознавания
  • Текстовые режимы для легкости и экономии ресурсов
  • Возможность одновременного отображения двух счетчиков (например, для входа и выхода)
  • Просмотр отчетов по подсчетам
  • Просмотр информации о системе

Установка

Вариант 1: Ручная установка

  1. Клонируйте репозиторий:
    git clone https://github.com/BespredeL/CVCounter.git
  2. Перейдите в директорию проекта:
    cd CVCounter
  3. Установите виртуальное окружение:
    python3 -m venv venv
  4. Активируйте виртуальное окружение:
    • В Windows:
      .\venv\Scripts\activate
    • В Linux/Mac:
      source venv/bin/activate
  5. Установите зависимости:
    pip3 install -r requirements.txt
  6. Переименуйте файл конфигурации:
    mv config.example.json config.json
  7. Измените параметры в файле конфигурации, добавьте свою модель YOLO.
  8. Запустите приложение:
    python app.py

Вариант 2: Установка через Docker

  1. Клонируйте репозиторий:
    git clone https://github.com/BespredeL/CVCounter.git
  2. Перейдите в директорию проекта:
    cd CVCounter
  3. Соберите и запустите с помощью Docker Compose:
    docker-compose up --build

Настройка

Все основные настройки хранятся в файле config.json

Общие параметры general

Параметр Описание Значение по умолчанию
debug Включить режим отладки true
log_path Путь к файлу журнала errors.log
log_level Минимальный уровень журнала INFO
log_console Включить вывод журнала в консоль false
default_language Язык по умолчанию ru
allow_unsafe_werkzeug Разрешить небезопасные операции в Werkzeug false
button_change_theme Показать кнопку изменения темы true
button_fullscreen Показать кнопку перехода в полноэкранный режим true
button_backward Показать кнопку назад false
button_save_capture Показать кнопку ручного сохранения кадра false
collapsed_keyboard Показать клавиатуры свернутыми true

Параметры сервера server

Параметр Описание Значение по умолчанию
host Адрес сервера 0.0.0.0
port Порт сервера 8080
use_reloader Включить режим перезагрузки false
log_output Включить вывод журнала true
socketio_key SocketIO ключ ""
allowed_origins Разрешенный адрес для Access-Control-Allow-Origin *

Параметры пользователей users

Параметр Описание Значение по умолчанию
admin Логин и пароль admin:admin

База данных db

Параметр Описание Значение по умолчанию
uri Подключение к базе данных sqlite:///system/database.db
prefix Префикс таблиц ""

Параметры форм form

Параметр Описание Значение по умолчанию
defect_show Показать форму брака true
correct_show Показать форму коррекции true
custom_fields Конфигурация пользовательских полей [{"name": "field_one", "label": "Field One", "type": "text"}]

Конфигурация обнаружения по умолчанию detection_default

Параметр Описание Значение по умолчанию
model_type Тип модели yolo
weights_path Путь к модели yolo_cfg/models/yolov8n.pt
confidence Порог доверия 0.7
iou Порог iou 0.7
device Устройство для вычислений 0
video_show_scale Масштаб вывода видео на странице 50
video_show_quality Качество вывода видео на странице 50
video_fps Ручная установка FPS (0 - автоматически) 0
vid_stride Шаг видеопотока 1
indicator_size Размер индикатора 10
counting_area Площадь подсчета (многоугольник) [[0, 0], [100, 0], [100, 100], [0, 100]]
counting_area_color Цвет зоны подсчета [67, 211, 255]
classes Классы для обнаружения {}

Конфигурация записи видео по умолчанию detection_default.recording

Параметр Описание Значение по умолчанию
enable Включить запись false
path Путь сохранения видео yolo_cfg/saved_recordings
scale Размер видео (в процентах) 100
quality Качество видео 80

Конфигурации обнаружения detections.ExampleCam

ExampleCam

Параметр Описание Значение по умолчанию
label Наименование подсчета Label ExampleCam
start_total_count Начальное значение подсчета 0
video_path Путь к видеофайлу или источнику камеры ""
video_show_scale Масштаб вывода видео на странице 70
video_show_quality Качество вывода видео на странице 30
video_fps Ручная установка FPS (0 - автоматически) 0
model_type Тип модели yolo
weights_path Путь к модели yolo_cfg/models/yolov8n.pt
confidence Порог доверия 0.7
iou Порог iou 0.7
device Устройство для вычислений 0
vid_stride Шаг видеопотока 1
indicator_size Размер индикатора 10
counting_area Площадь подсчета (многоугольник) [[0, 0], [100, 0], [100, 100], [0, 100]]
counting_area_color Цвет зоны подсчета [255, 64, 0]
classes Классы для обнаружения {}
dataset_create.enable Включить создание набора данных true
dataset_create.probability Вероятность создания изображения (0.01-1) 0.05
dataset_create.path Путь для сохранения набора данных yolo_cfg/saved_images/ExampleCam
recording.enable Включить запись false
recording.path Путь сохранения видео yolo_cfg/saved_recordings
recording.scale Размер видео (в процентах) 100
recording.quality Качество видео 80

Интерфейс

Основной вид (Main View):

На этой странице отображается видео с камеры, а также счетчики, показывающие количество объектов. Это основной интерфейс приложения, где можно наблюдать видео в реальном времени вместе с результатами распознавания.

URL:

http://127.0.0.1/counter/{location}

или

http://127.0.0.1/counter/{location}/video

Текстовый вид (Text View):

На этой странице отображаются только значения счетчиков без видео. Этот режим подходит для устройств с низкими ресурсами или при необходимости простого отображения информации.

URL:

http://127.0.0.1/counter/{location}/text

Текстовый вид с двумя счетчиками (Text View with Two Counters):

Этот вид отображает два счетчика одновременно, что удобно для отслеживания объектов на входе и выходе.

URL:

http://127.0.0.1/counter_dual/text/{location_first}/{location_second}

Вклад в проект

Я всегда рад новому вкладу в развитие проекта! Чтобы внести изменения, выполните следующие шаги:

  • Форкните этот репозиторий.
  • Создайте новую ветку.
    git checkout -b feature/your-feature
  • Внесите изменения и закоммитьте их.
    git commit -m "Добавил новую функцию"
  • Запушьте изменения
    git push origin feature/your-feature
  • Отправьте PR (Pull Request) на review.

Перед отправкой убедитесь, что ваши изменения не нарушают существующий функционал.


Часто задаваемые вопросы (FAQ)

1. Какие минимальные системные требования для сервера?

  • Процессор: Современный 4-ядерный процессор (например, Intel Core i5 или AMD Ryzen 5).
  • Оперативная память: Минимум 8 ГБ (рекомендуется 16 ГБ и выше для стабильной работы с потоковым видео).
  • Хранилище: SSD для хранения набора данных и логов.
  • Видеокарта: Наличие GPU значительно ускоряет обработку и снижает нагрузку на систему. Минимальные требования к видеокарте:
    • NVIDIA GTX 1050 (2 ГБ VRAM): минимально достаточна для обработки изображений с низкой частотой кадров.
    • NVIDIA GTX 1660 (6 ГБ VRAM): рекомендуется для работы с видеопотоком в реальном времени и обработки видео высокого разрешения (до 720p).
    • NVIDIA RTX 2060 или выше (6 ГБ+ VRAM): для стабильного запуска моделей YOLO в реальном времени на разрешениях от 1080p и выше.

Примечание: YOLO поддерживает вычисления на видеокартах NVIDIA с использованием CUDA. Видеокарты от других производителей (например, AMD) могут работать, но это требует дополнительных настроек, и производительность может быть ниже.

2. Какие минимальные системные требования для клиента?

Любое устройство с веб-браузером в котором разрешено выполнение JavaScript.

3. Как добавить новый тип счетчиков?

В коде проекта уже реализованы основные функции, но вы можете расширить логику, изменив обработку данных в соответствующих маршрутах (views).

4. Что делать, если видео не отображается?

Проверьте работу камеры и убедитесь, что она правильно подключена и транслируется в веб-интерфейсе.

5. Как избежать закрытия интерфейса подсчета?

Вы можете запускать браузер в режиме киоска, для предотвращения выхода из него (например для Google Chrome при запуске можно указать "--kiosk --start-fullscreen")


Лицензия

Проект распространяется под лицензией AGPL-3.0. Подробности можно найти в файле LICENSE.

Clone this wiki locally