Добавил:
У меня есть канал с приколами: t.me/urmipies_garbage Подпишитесь пж-пж!!!! Опубликованный материал нарушает ваши авторские права? Сообщите нам.
Вуз: Предмет: Файл:
Я получил 5 за защиту кста.docx
Скачиваний:
0
Добавлен:
02.09.2026
Размер:
352 Кб
Скачать

2. Выбор средств разработки

2.1 Выбор языка программирования для серверной части

Выбор языка программирования для серверной части определяет производительность, скорость разработки и доступность библиотек компьютерного зрения. Серверная система должна одновременно решать три группы задач: захват и обработку видеопотоков в реальном времени, выполнение ресурсоёмких алгоритмов (вычитание фона, стереосопоставление, триангуляция) и обеспечение сетевого взаимодействия с клиентом по WebSocket.

В качестве кандидатов рассматривались три языка: Python (популярный в сфере компьютерного зрения, богатая экосистема), C++ (максимальная производительность, нативные реализации OpenCV) и Go (встроенная конкурентность, растущая популярность в сетевых сервисах). Сравнение проводилось по пяти ключевым критериям: производительность обработки кадра, доступность библиотек компьютерного зрения, скорость разработки, поддержка асинхронности и размер сообщества [18]. Результаты анализа приведены в таблице 2.1.

Таблица 2.1 – Критерии выбора языка

Критерий

Python

C++

Go

Производительность (врем я обработки кадра 1920×1080 StereoBM)

58 мс

22 мс

35 мс

Доступность библиотек CV

OpenCV-Python 4.8, высокая

OpenCV 4.8 (нативный), высокая

gocv (обертка OpenCV), средняя

Продолжение таблицы 2.1

Критерий

Python

C++

Go

Скорость разработки

Высокая (динамическая типизация, REPL, богатая стандартная библиотека)

Средняя (статическая типизация, компиляция, управление памятью)

Средняя (статическая типизация, быстрая компиляция, простой синтаксис)

Экосистема и сообщество

Огромное (PyPI 400 тыс. пакетов, Stack Overflow 2,1 млн вопросов по Python)

Большое (Conan, vcpkg, 1,5 млн вопросов SO)

Среднее (Go modules, 0,2 млн вопросов SO)

Поддержка асинхронности

asyncio, websockets — встроено в стандартную библиотеку с Python 3.4/3.5

Boost.Asio, сторонние библиотеки (websocketpp)

goroutines — нативная конкурентность

Python выбран по следующим причинам:

  1. Зрелая экосистема компьютерного зрения: OpenCV-Python — официальная Python-обертка, поддерживаемая командой OpenCV; NumPy — де-факто стандарт работы с массивами (карты диспаратности представлены как numpy.ndarray); matplotlib, OpenCV.imshow — быстрая визуализация для отладки;

  2. Скорость прототипирования: динамическая типизация позволяет итеративно экспериментировать с параметрами стереосопоставления (блочный размер, диапазон диспаратности, пост-фильтрация) без перекомпиляции; REPL (IPython, Jupyter Notebook) ускоряет отладку алгоритмов калибровки;

  3. Многопоточность для захвата: модуль threading, несмотря на GIL, эффективен для операций ввода-вывода (вызовы recv() для RTP-пакетов блокируются на уровне ОС, освобождая GIL); для CPU-bound задач (стереосопоставление) функции OpenCV написаны на C++;

Соседние файлы в предмете Дипломная работа (подготовка и защита)