From 2a111f7a6c5033db275d82cc1a9129b89ae19678 Mon Sep 17 00:00:00 2001 From: peng xiao Date: Tue, 5 Nov 2013 10:40:27 +0800 Subject: [PATCH] Let perf/accuracy test of ocl haar uses detectMultiScale api. Fix image to be used by perf test. --- modules/ocl/perf/perf_haar.cpp | 42 ++----------------------------------- modules/ocl/test/test_objdetect.cpp | 11 +++------- samples/ocl/facedetect.cpp | 6 +++--- 3 files changed, 8 insertions(+), 51 deletions(-) diff --git a/modules/ocl/perf/perf_haar.cpp b/modules/ocl/perf/perf_haar.cpp index 9ccaf31..1e6ba1b 100644 --- a/modules/ocl/perf/perf_haar.cpp +++ b/modules/ocl/perf/perf_haar.cpp @@ -48,49 +48,11 @@ using namespace perf; ///////////// Haar //////////////////////// -namespace cv -{ -namespace ocl -{ - -struct getRect -{ - Rect operator()(const CvAvgComp &e) const - { - return e.rect; - } -}; - -class CascadeClassifier_GPU : public OclCascadeClassifier -{ -public: - void detectMultiScale(oclMat &image, - CV_OUT std::vector& faces, - double scaleFactor = 1.1, - int minNeighbors = 3, int flags = 0, - Size minSize = Size(), - Size maxSize = Size()) - { - (void)maxSize; - MemStorage storage(cvCreateMemStorage(0)); - //CvMat img=image; - CvSeq *objs = oclHaarDetectObjects(image, storage, scaleFactor, minNeighbors, flags, minSize); - vector vecAvgComp; - Seq(objs).copyTo(vecAvgComp); - faces.resize(vecAvgComp.size()); - std::transform(vecAvgComp.begin(), vecAvgComp.end(), faces.begin(), getRect()); - } - -}; - -} -} - PERF_TEST(HaarFixture, Haar) { vector faces; - Mat img = imread(getDataPath("gpu/haarcascade/basketball1.png"), CV_LOAD_IMAGE_GRAYSCALE); + Mat img = imread(getDataPath("gpu/haarcascade/group_1_640x480_VGA.pgm"), CV_LOAD_IMAGE_GRAYSCALE); ASSERT_TRUE(!img.empty()) << "can't open basketball1.png"; declare.in(img); @@ -107,7 +69,7 @@ PERF_TEST(HaarFixture, Haar) } else if (RUN_OCL_IMPL) { - ocl::CascadeClassifier_GPU faceCascade; + ocl::OclCascadeClassifier faceCascade; ocl::oclMat oclImg(img); ASSERT_TRUE(faceCascade.load(getDataPath("gpu/haarcascade/haarcascade_frontalface_alt.xml"))) diff --git a/modules/ocl/test/test_objdetect.cpp b/modules/ocl/test/test_objdetect.cpp index 6f47d74..89f45b0 100644 --- a/modules/ocl/test/test_objdetect.cpp +++ b/modules/ocl/test/test_objdetect.cpp @@ -218,14 +218,9 @@ PARAM_TEST_CASE(Haar, int, CascadeName) OCL_TEST_P(Haar, FaceDetect) { - MemStorage storage(cvCreateMemStorage(0)); - CvSeq *_objects; - _objects = cascade.oclHaarDetectObjects(d_img, storage, 1.1, 3, - flags, Size(30, 30), Size(0, 0)); - vector vecAvgComp; - Seq(_objects).copyTo(vecAvgComp); - oclfaces.resize(vecAvgComp.size()); - std::transform(vecAvgComp.begin(), vecAvgComp.end(), oclfaces.begin(), getRect()); + cascade.detectMultiScale(d_img, oclfaces, 1.1, 3, + flags, + Size(30, 30), Size(0, 0)); cpucascade.detectMultiScale(img, faces, 1.1, 3, flags, diff --git a/samples/ocl/facedetect.cpp b/samples/ocl/facedetect.cpp index d20c937..10c6c4f 100644 --- a/samples/ocl/facedetect.cpp +++ b/samples/ocl/facedetect.cpp @@ -41,7 +41,7 @@ static double getTime() static void detect( Mat& img, vector& faces, - ocl::OclCascadeClassifierBuf& cascade, + ocl::OclCascadeClassifier& cascade, double scale, bool calTime); @@ -87,7 +87,7 @@ int main( int argc, const char** argv ) outputName = cmd.get("o"); string cascadeName = cmd.get("t"); double scale = cmd.get("c"); - ocl::OclCascadeClassifierBuf cascade; + ocl::OclCascadeClassifier cascade; CascadeClassifier cpu_cascade; if( !cascade.load( cascadeName ) || !cpu_cascade.load(cascadeName) ) @@ -180,7 +180,7 @@ int main( int argc, const char** argv ) } void detect( Mat& img, vector& faces, - ocl::OclCascadeClassifierBuf& cascade, + ocl::OclCascadeClassifier& cascade, double scale, bool calTime) { ocl::oclMat image(img); -- 2.7.4