Object Detection


class ocl::OclCascadeClassifier : public CascadeClassifier

Cascade classifier class used for object detection. Supports HAAR cascade classifier in the form of cross link

class CV_EXPORTS OclCascadeClassifier : public CascadeClassifier
        CvSeq* oclHaarDetectObjects(oclMat &gimg, CvMemStorage *storage, double scaleFactor,
                              int minNeighbors, int flags, CvSize minSize = cvSize(0, 0),
                              CvSize maxSize = cvSize(0, 0));


(Ocl) A face detection example using cascade classifiers can be found at opencv_source_code/samples/ocl/facedetect.cpp


Detects objects of different sizes in the input image.

C++: CvSeq* ocl::OclCascadeClassifier::oclHaarDetectObjects(oclMat& gimg, CvMemStorage* storage, double scaleFactor, int minNeighbors, int flags, CvSize minSize=cvSize(0, 0), CvSize maxSize=cvSize(0, 0))
  • gimage – Matrix of type CV_8U containing an image where objects should be detected.
  • scaleFactor – Parameter specifying how much the image size is reduced at each image scale.
  • minNeighbors – Parameter specifying how many neighbors each candidate rectangle should have to retain it.
  • flags – Parameter with the same meaning for an old cascade as in the function cvHaarDetectObjects. It is not used for a new cascade.
  • minSize – Minimum possible object size. Objects smaller than that are ignored.
  • maxSize – Maximum possible object size. Objects larger than that are ignored.

The function provides a very similar interface with that in CascadeClassifier class, except using oclMat as input image.


struct ocl::MatchTemplateBuf

Class providing memory buffers for ocl::matchTemplate() function, plus it allows to adjust some specific parameters.

struct CV_EXPORTS MatchTemplateBuf
    Size user_block_size;
    oclMat imagef, templf;
    std::vector<oclMat> images;
    std::vector<oclMat> image_sums;
    std::vector<oclMat> image_sqsums;

You can use field user_block_size to set specific block size for ocl::matchTemplate() function. If you leave its default value Size(0,0) then automatic estimation of block size will be used (which is optimized for speed). By varying user_block_size you can reduce memory requirements at the cost of speed.


Computes a proximity map for a raster template and an image where the template is searched for.

C++: void ocl::matchTemplate(const oclMat& image, const oclMat& templ, oclMat& result, int method)
C++: void ocl::matchTemplate(const oclMat& image, const oclMat& templ, oclMat& result, int method, MatchTemplateBuf& buf)
  • image – Source image. CV_32F and CV_8U depth images (1..4 channels) are supported for now.
  • templ – Template image with the size and type the same as image .
  • result – Map containing comparison results ( CV_32FC1 ). If image is W x H and templ is w x h, then result must be W-w+1 x H-h+1.
  • method – Specifies the way to compare the template with the image.
  • buf – Optional buffer to avoid extra memory allocations and to adjust some specific parameters. See ocl::MatchTemplateBuf.

The following methods are supported for the CV_8U depth images for now:


The following methods are supported for the CV_32F images for now:


See also