Merge pull request #5340 from alalek:ocl_off

This commit is contained in:
Vadim Pisarevsky
2015-11-10 16:53:36 +00:00
16 changed files with 127 additions and 18 deletions

View File

@@ -1040,7 +1040,7 @@ public:
struct getRect { Rect operator ()(const CvAvgComp& e) const { return e.rect; } };
struct getNeighbors { int operator ()(const CvAvgComp& e) const { return e.neighbors; } };
#ifdef HAVE_OPENCL
bool CascadeClassifierImpl::ocl_detectMultiScaleNoGrouping( const std::vector<float>& scales,
std::vector<Rect>& candidates )
{
@@ -1171,6 +1171,7 @@ bool CascadeClassifierImpl::ocl_detectMultiScaleNoGrouping( const std::vector<fl
}
return ok;
}
#endif
bool CascadeClassifierImpl::isOldFormatCascade() const
{
@@ -1278,10 +1279,12 @@ void CascadeClassifierImpl::detectMultiScaleNoGrouping( InputArray _image, std::
if( scales.size() == 0 || !featureEvaluator->setImage(gray, scales) )
return;
#ifdef HAVE_OPENCL
// OpenCL code
CV_OCL_RUN(use_ocl, ocl_detectMultiScaleNoGrouping( scales, candidates ))
tryOpenCL = false;
#endif
// CPU code
featureEvaluator->getMats();
@@ -1527,9 +1530,11 @@ bool CascadeClassifierImpl::Data::read(const FileNode &root)
bool CascadeClassifierImpl::read_(const FileNode& root)
{
#ifdef HAVE_OPENCL
tryOpenCL = true;
haarKernel = ocl::Kernel();
lbpKernel = ocl::Kernel();
#endif
ustages.release();
unodes.release();
uleaves.release();

View File

@@ -125,9 +125,10 @@ protected:
int yStep, double factor, std::vector<Rect>& candidates,
std::vector<int>& rejectLevels, std::vector<double>& levelWeights,
Size sumSize0, bool outputRejectLevels = false );
#ifdef HAVE_OPENCL
bool ocl_detectMultiScaleNoGrouping( const std::vector<float>& scales,
std::vector<Rect>& candidates );
#endif
void detectMultiScaleNoGrouping( InputArray image, std::vector<Rect>& candidates,
std::vector<int>& rejectLevels, std::vector<double>& levelWeights,
double scaleFactor, Size minObjectSize, Size maxObjectSize,
@@ -218,8 +219,10 @@ protected:
Ptr<MaskGenerator> maskGenerator;
UMat ugrayImage;
UMat ufacepos, ustages, unodes, uleaves, usubsets;
#ifdef HAVE_OPENCL
ocl::Kernel haarKernel, lbpKernel;
bool tryOpenCL;
#endif
Mutex mtx;
};