From 1a8f4a896d7093e0a2cc07675214ea4792a53b5d Mon Sep 17 00:00:00 2001 From: Vladimir Date: Mon, 6 Jul 2015 03:58:44 +0900 Subject: [PATCH] Transparent API Support --- modules/tracking/src/tldDetector.cpp | 9 +++------ modules/tracking/src/tldModel.cpp | 4 ++-- modules/tracking/src/tldTracker.cpp | 24 ++++++++++++++++++++---- 3 files changed, 25 insertions(+), 12 deletions(-) diff --git a/modules/tracking/src/tldDetector.cpp b/modules/tracking/src/tldDetector.cpp index 927deaec4..cbb783ece 100644 --- a/modules/tracking/src/tldDetector.cpp +++ b/modules/tracking/src/tldDetector.cpp @@ -139,9 +139,8 @@ namespace cv //printf("Mem Cpy GPU: %f\n", t); size_t globSize = 1000; - size_t localSize = 128; //e3 = getTickCount(); - if (!k.run(1, &globSize, &localSize, true)) + if (!k.run(1, &globSize, NULL, false)) printf("Kernel Run Error!!!"); //e4 = getTickCount(); //t = (e4 - e3) / getTickFrequency()*1000.0; @@ -219,9 +218,8 @@ namespace cv // 2 -> Pos&Neg size_t globSize = 2 * numOfPatches*MAX_EXAMPLES_IN_MODEL; - size_t localSize = 1024; //e3 = getTickCount(); - if (!k.run(1, &globSize, &localSize, true)) + if (!k.run(1, &globSize, NULL, false)) printf("Kernel Run Error!!!"); //e4 = getTickCount(); //t = (e4 - e3) / getTickFrequency()*1000.0; @@ -374,9 +372,8 @@ namespace cv //printf("Mem Cpy GPU: %f\n", t); size_t globSize = 1000; - size_t localSize = 128; //e3 = getTickCount(); - if (!k.run(1, &globSize, &localSize, true)) + if (!k.run(1, &globSize, NULL, false)) printf("Kernel Run Error!!!"); //e4 = getTickCount(); //t = (e4 - e3) / getTickFrequency()*1000.0; diff --git a/modules/tracking/src/tldModel.cpp b/modules/tracking/src/tldModel.cpp index 427aaca29..e85b8db37 100644 --- a/modules/tracking/src/tldModel.cpp +++ b/modules/tracking/src/tldModel.cpp @@ -233,7 +233,7 @@ namespace cv } e2 = getTickCount(); t = (e2 - e1) / getTickFrequency() * 1000; - printf("Integrate Additional: %fms\n", t); + //printf("Integrate Additional: %fms\n", t); /* if( negativeIntoModel > 0 ) dfprintf((stdout, "negativeIntoModel = %d ", negativeIntoModel)); @@ -303,7 +303,7 @@ namespace cv } e2 = getTickCount(); t = (e2 - e1) / getTickFrequency() * 1000; - printf("Integrate Additional OCL: %fms\n", t); + //printf("Integrate Additional OCL: %fms\n", t); /* if( negativeIntoModel > 0 ) dfprintf((stdout, "negativeIntoModel = %d ", negativeIntoModel)); diff --git a/modules/tracking/src/tldTracker.cpp b/modules/tracking/src/tldTracker.cpp index e9d10bd37..0f1e2f78e 100644 --- a/modules/tracking/src/tldTracker.cpp +++ b/modules/tracking/src/tldTracker.cpp @@ -116,11 +116,20 @@ bool TrackerTLDImpl::updateImpl(const Mat& image, Rect2d& boundingBox) std::vector candidates; std::vector candidatesRes; bool trackerNeedsReInit = false; + bool DETECT_FLG = false; for( int i = 0; i < 2; i++ ) { Rect2d tmpCandid = boundingBox; - if( ( (i == 0) && !data->failedLastTime && trackerProxy->update(image, tmpCandid) ) || - ((i == 1) && (tldModel->detector->ocl_detect(imageForDetector, image_blurred, tmpCandid, detectorResults, tldModel->getMinSize())))) + + if (i == 1) + { + if (ocl::haveOpenCL()) + DETECT_FLG = tldModel->detector->ocl_detect(imageForDetector, image_blurred, tmpCandid, detectorResults, tldModel->getMinSize()); + else + DETECT_FLG = tldModel->detector->detect(imageForDetector, image_blurred, tmpCandid, detectorResults, tldModel->getMinSize()); + } + + if( ( (i == 0) && !data->failedLastTime && trackerProxy->update(image, tmpCandid) ) || ( DETECT_FLG)) { candidates.push_back(tmpCandid); if( i == 0 ) @@ -202,10 +211,17 @@ bool TrackerTLDImpl::updateImpl(const Mat& image, Rect2d& boundingBox) tldModel->integrateRelabeled(imageForDetector, image_blurred, detectorResults); //dprintf(("%d relabeled by nExpert\n", negRelabeled)); pExpert.additionalExamples(examplesForModel, examplesForEnsemble); - tldModel->ocl_integrateAdditional(examplesForModel, examplesForEnsemble, true); + if (ocl::haveOpenCL()) + tldModel->ocl_integrateAdditional(examplesForModel, examplesForEnsemble, true); + else + tldModel->integrateAdditional(examplesForModel, examplesForEnsemble, true); examplesForModel.clear(); examplesForEnsemble.clear(); nExpert.additionalExamples(examplesForModel, examplesForEnsemble); - tldModel->ocl_integrateAdditional(examplesForModel, examplesForEnsemble, false); + + if (ocl::haveOpenCL()) + tldModel->ocl_integrateAdditional(examplesForModel, examplesForEnsemble, false); + else + tldModel->integrateAdditional(examplesForModel, examplesForEnsemble, false); } else {