OCL: Fix for Haar classifier (thanks to Konstantin Rodyushkin).

This commit is contained in:
Alexander Karsakov 2014-02-26 18:11:11 +04:00
parent 7dc22b4ea6
commit e6f6707558
3 changed files with 6 additions and 6 deletions

View File

@ -888,12 +888,12 @@ CvSeq *cv::ocl::OclCascadeClassifier::oclHaarDetectObjects( oclMat &gimg, CvMemS
for(int y=0;y<WGNumY;++y)
{
int gy = y*localThreads[1];
if(gy>=(Height-cascade->orig_window_size.height))
if(gy>=Height)
continue; // no data to process
for(int x=0;x<WGNumX;++x)
{
int gx = x*localThreads[0];
if(gx>=(Width-cascade->orig_window_size.width))
if(gx>=Width)
continue; // no data to process
if(scaleinfo[z].factor<=2)

View File

@ -150,8 +150,8 @@ __kernel void gpuRunHaarClassifierCascadePacked(
int index = i+lid; // index in shared local memory
if(index<DATA_SIZE)
{// calc global x,y coordinat and read data from there
int x = min(GroupX + (index % (DATA_SIZE_X)),Width-1);
int y = min(GroupY + (index / (DATA_SIZE_X)),Height-1);
int x = min(GroupX + (index % (DATA_SIZE_X)),Width-1+WND_SIZE_X);
int y = min(GroupY + (index / (DATA_SIZE_X)),Height-1+WND_SIZE_Y);
SumL[index] = sum[ImgOffset+y*pixelstep+x];
}
}

View File

@ -226,7 +226,7 @@ OCL_TEST_P(Haar, FaceDetect)
flags,
Size(30, 30), Size(0, 0));
EXPECT_LT(checkRectSimilarity(img.size(), faces, oclfaces), 1.0);
EXPECT_LT(checkRectSimilarity(img.size(), faces, oclfaces), 0.1);
}
OCL_TEST_P(Haar, FaceDetectUseBuf)
@ -247,7 +247,7 @@ OCL_TEST_P(Haar, FaceDetectUseBuf)
Size(30, 30));
cascadebuf.release();
EXPECT_LT(checkRectSimilarity(img.size(), faces, oclfaces), 1.0);
EXPECT_LT(checkRectSimilarity(img.size(), faces, oclfaces), 0.1);
}
INSTANTIATE_TEST_CASE_P(OCL_ObjDetect, Haar,