X-Git-Url: http://47.100.26.94:8080/?a=blobdiff_plain;f=src%2FEngine.cpp;h=6d44f3c355c413517d00d8065fdd2d1eb705cfba;hb=48adce31a0ffdb3757ee1be8a63ce7e769e87deb;hp=c044ab7ad5d9f615f8e1d1f265588a55426e833e;hpb=b3feccd1ee1186c37b39844dc566d39aedaa54ed;p=trackerpp.git diff --git a/src/Engine.cpp b/src/Engine.cpp index c044ab7..6d44f3c 100644 --- a/src/Engine.cpp +++ b/src/Engine.cpp @@ -2,55 +2,66 @@ #include #include "Engine.h" #include "Logger.h" +#include "PredictorWrapper.h" using namespace suanzi; const static std::string TAG = "Engine"; static std::mutex g_mutex; -static Engine* g_instance = nullptr; +static EngineWPtr g_instance; -Engine::Engine() -{ - detector = new Detector(); - tracker = new Tracker(); -} -Engine* Engine::create() +EnginePtr Engine::create() { LOG_DEBUG(TAG, "create"); std::lock_guard lock(g_mutex); - if (g_instance) - return g_instance; - - Engine* instance (new Engine()); + if (g_instance.lock()){ + LOG_ERROR(TAG, "already exists"); + return EnginePtr(); // nullptr + } + EnginePtr instance (new Engine()); g_instance = instance; - return g_instance; + return instance; } -void Engine::destroy() +Engine::Engine() { - delete g_instance; + detector = std::make_shared(); + MetricsPtr m (new Metrics("model.pkl")); + multiTracker = std::make_shared(m); } Engine::~Engine() { - delete detector; - delete tracker; } +void Engine::destroy() +{ +} + + void Engine::setVideoSrc(VideoSrcType type, const std::string& url) { - videoSrc = url; - reader = VideoReaderFactory::createVideoReader(type, url); + PredictorWrapperPtr pp = PredictorWrapper::create("./python/model.pkl"); + + pp->dump(); + +// videoSrc = url; + //reader = VideoReaderFactory::createVideoReader(type, url); + } void Engine::run() { LOG_DEBUG(TAG, "run"); cv::Mat frame; + Detection detections[128]; while (reader->read(frame)){ - detector->detect(frame); + LOG_DEBUG(TAG, "Size: " << frame.cols << "x" << frame.rows); + // TODO + int total = detector->detect(frame, detections); + multiTracker->update(total, detections, frame); } }