Commit ec3f22ce authored by Vadim Pisarevsky's avatar Vadim Pisarevsky

renamed OpenCL kernel filename; made some final changes

parent b7553d4e
...@@ -1133,7 +1133,7 @@ bool CascadeClassifierImpl::detectSingleScale( InputArray _image, Size processin ...@@ -1133,7 +1133,7 @@ bool CascadeClassifierImpl::detectSingleScale( InputArray _image, Size processin
bool CascadeClassifierImpl::ocl_detectSingleScale( InputArray _image, Size processingRectSize, bool CascadeClassifierImpl::ocl_detectSingleScale( InputArray _image, Size processingRectSize,
int yStep, double factor, Size sumSize0 ) int yStep, double factor, Size sumSize0 )
{ {
const int VECTOR_SIZE = 4; const int VECTOR_SIZE = 1;
Ptr<HaarEvaluator> haar = featureEvaluator.dynamicCast<HaarEvaluator>(); Ptr<HaarEvaluator> haar = featureEvaluator.dynamicCast<HaarEvaluator>();
if( haar.empty() ) if( haar.empty() )
return false; return false;
...@@ -1142,7 +1142,7 @@ bool CascadeClassifierImpl::ocl_detectSingleScale( InputArray _image, Size proce ...@@ -1142,7 +1142,7 @@ bool CascadeClassifierImpl::ocl_detectSingleScale( InputArray _image, Size proce
if( cascadeKernel.empty() ) if( cascadeKernel.empty() )
{ {
cascadeKernel.create("runHaarClassifierStump", ocl::objdetect::haarobjectdetect_oclsrc, cascadeKernel.create("runHaarClassifierStump", ocl::objdetect::cascadedetect_oclsrc,
format("-D VECTOR_SIZE=%d", VECTOR_SIZE)); format("-D VECTOR_SIZE=%d", VECTOR_SIZE));
if( cascadeKernel.empty() ) if( cascadeKernel.empty() )
return false; return false;
......
...@@ -40,7 +40,7 @@ __kernel void runHaarClassifierStump( ...@@ -40,7 +40,7 @@ __kernel void runHaarClassifierStump(
int2 imgsize, int xyscale, float factor, int2 imgsize, int xyscale, float factor,
int4 normrect, int2 windowsize, int maxFaces) int4 normrect, int2 windowsize, int maxFaces)
{ {
int ix = get_global_id(0)*xyscale*VECTOR_SIZE; int ix = get_global_id(0)*xyscale;
int iy = get_global_id(1)*xyscale; int iy = get_global_id(1)*xyscale;
sumstep /= sizeof(int); sumstep /= sizeof(int);
sqsumstep /= sizeof(int); sqsumstep /= sizeof(int);
...@@ -94,7 +94,6 @@ __kernel void runHaarClassifierStump( ...@@ -94,7 +94,6 @@ __kernel void runHaarClassifierStump(
if( stageIdx == nstages ) if( stageIdx == nstages )
{ {
int nfaces = atomic_inc(facepos); int nfaces = atomic_inc(facepos);
//printf("detected face #d!!!!\n", nfaces);
if( nfaces < maxFaces ) if( nfaces < maxFaces )
{ {
volatile __global int* face = facepos + 1 + nfaces*4; volatile __global int* face = facepos + 1 + nfaces*4;
......
...@@ -201,13 +201,12 @@ void detectAndDraw( UMat& img, Mat& canvas, CascadeClassifier& cascade, ...@@ -201,13 +201,12 @@ void detectAndDraw( UMat& img, Mat& canvas, CascadeClassifier& cascade,
t = (double)getTickCount(); t = (double)getTickCount();
cvtColor( img, gray, COLOR_BGR2GRAY ); resize( img, smallImg, Size(), scale0, scale0, INTER_LINEAR );
resize( gray, smallImg, Size(), scale0, scale0, INTER_LINEAR ); cvtColor( smallImg, gray, COLOR_BGR2GRAY );
cvtColor(smallImg, canvas, COLOR_GRAY2BGR); equalizeHist( gray, gray );
equalizeHist( smallImg, smallImg );
cascade.detectMultiScale( smallImg, faces, cascade.detectMultiScale( gray, faces,
1.1, 2, 0 1.1, 3, 0
//|CASCADE_FIND_BIGGEST_OBJECT //|CASCADE_FIND_BIGGEST_OBJECT
//|CASCADE_DO_ROUGH_SEARCH //|CASCADE_DO_ROUGH_SEARCH
|CASCADE_SCALE_IMAGE |CASCADE_SCALE_IMAGE
...@@ -215,8 +214,8 @@ void detectAndDraw( UMat& img, Mat& canvas, CascadeClassifier& cascade, ...@@ -215,8 +214,8 @@ void detectAndDraw( UMat& img, Mat& canvas, CascadeClassifier& cascade,
Size(30, 30) ); Size(30, 30) );
if( tryflip ) if( tryflip )
{ {
flip(smallImg, smallImg, 1); flip(gray, gray, 1);
cascade.detectMultiScale( smallImg, faces2, cascade.detectMultiScale( gray, faces2,
1.1, 2, 0 1.1, 2, 0
//|CASCADE_FIND_BIGGEST_OBJECT //|CASCADE_FIND_BIGGEST_OBJECT
//|CASCADE_DO_ROUGH_SEARCH //|CASCADE_DO_ROUGH_SEARCH
...@@ -229,7 +228,7 @@ void detectAndDraw( UMat& img, Mat& canvas, CascadeClassifier& cascade, ...@@ -229,7 +228,7 @@ void detectAndDraw( UMat& img, Mat& canvas, CascadeClassifier& cascade,
} }
} }
t = (double)getTickCount() - t; t = (double)getTickCount() - t;
cvtColor(smallImg, canvas, COLOR_GRAY2BGR); smallImg.copyTo(canvas);
double fps = getTickFrequency()/t; double fps = getTickFrequency()/t;
...@@ -257,7 +256,7 @@ void detectAndDraw( UMat& img, Mat& canvas, CascadeClassifier& cascade, ...@@ -257,7 +256,7 @@ void detectAndDraw( UMat& img, Mat& canvas, CascadeClassifier& cascade,
color, 3, 8, 0); color, 3, 8, 0);
if( nestedCascade.empty() ) if( nestedCascade.empty() )
continue; continue;
UMat smallImgROI = smallImg(*r); UMat smallImgROI = gray(*r);
nestedCascade.detectMultiScale( smallImgROI, nestedObjects, nestedCascade.detectMultiScale( smallImgROI, nestedObjects,
1.1, 2, 0 1.1, 2, 0
//|CASCADE_FIND_BIGGEST_OBJECT //|CASCADE_FIND_BIGGEST_OBJECT
......
Markdown is supported
0% or
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment