/
klischa
/
AstraScanner2
Обзор
Документация
Войти
/
klischa
/
AstraScanner2
Код
Запросы
0
Задачи
Вики
Пакеты
0
Релизы
0
CI/CD
Аналитика
Безопасность
master
src/marker_tracker/MarkerTracker.cpp
80 строк
3 KB
Astra2
fix: harden project state and tests
20 июн 2026, 08:27
20 июн 2026, 08:27
4fd91fd
Код
Авторство
О чём код?
#include "MarkerTracker.h" #include "CircularMarkerDetector.h" #ifdef ASTRA_ENABLE_CCTAG #include "CCTagMarkerDetector.h" #endif #include <QDebug> MarkerTracker::MarkerTracker() : m_detectorType("Circular"), m_detector(nullptr) { } MarkerTracker::~MarkerTracker() { } void MarkerTracker::init(const QString& detectorType) { updateParams(detectorType); } void MarkerTracker::updateParams(const QString& detectorType, int numRings, float minIdentProba) { if (detectorType == m_detectorType && m_detector != nullptr) { // Если тип не изменился и детектор уже создан, обновляем только параметры if (detectorType == "CCTag" && m_detector) { #ifdef ASTRA_ENABLE_CCTAG CCTagMarkerDetector* cctagDetector = dynamic_cast<CCTagMarkerDetector*>(m_detector.get()); if (cctagDetector) { cctagDetector->setNumRings(numRings); cctagDetector->setMinIdentProba(minIdentProba); } #endif } return; } // Создаем новый детектор m_detectorType = detectorType; if (detectorType == "Circular") { createCircularDetector(); } else if (detectorType == "CCTag") { #ifdef ASTRA_ENABLE_CCTAG createCCTagDetector(numRings, minIdentProba); #else qWarning() << "[MarkerTracker] CCTag requested, but CCTag support is not compiled; using Circular"; m_detectorType = "Circular"; createCircularDetector(); #endif } else { qWarning() << "[MarkerTracker] Unknown detector type:" << detectorType << ", using Circular by default"; createCircularDetector(); } } void MarkerTracker::createCircularDetector() { m_detector = std::make_unique<CircularMarkerDetector>(); qDebug() << "[MarkerTracker] Created CircularMarkerDetector"; } void MarkerTracker::createCCTagDetector(int numRings, float minIdentProba) { #ifdef ASTRA_ENABLE_CCTAG m_detector = std::make_unique<CCTagMarkerDetector>(); CCTagMarkerDetector* cctagDetector = dynamic_cast<CCTagMarkerDetector*>(m_detector.get()); if (cctagDetector) { cctagDetector->setNumRings(numRings); cctagDetector->setMinIdentProba(minIdentProba); } qDebug() << "[MarkerTracker] Created CCTagMarkerDetector with" << numRings << "rings"; #else Q_UNUSED(numRings); Q_UNUSED(minIdentProba); qWarning() << "[MarkerTracker] CCTag support is not compiled; using Circular"; m_detectorType = "Circular"; createCircularDetector(); #endif }