The class implements Histogram of Oriented Gradients ([Dalal2005]) object detector.
struct CV_EXPORTS HOGDescriptor
{
enum { DEFAULT_WIN_SIGMA = -1 };
enum { DEFAULT_NLEVELS = 64 };
enum { DESCR_FORMAT_ROW_BY_ROW, DESCR_FORMAT_COL_BY_COL };
HOGDescriptor(Size win_size=Size(64, 128), Size block_size=Size(16, 16),
Size block_stride=Size(8, 8), Size cell_size=Size(8, 8),
int nbins=9, double win_sigma=DEFAULT_WIN_SIGMA,
double threshold_L2hys=0.2, bool gamma_correction=true,
int nlevels=DEFAULT_NLEVELS);
size_t getDescriptorSize() const;
size_t getBlockHistogramSize() const;
void setSVMDetector(const vector<float>& detector);
static vector<float> getDefaultPeopleDetector();
static vector<float> getPeopleDetector48x96();
static vector<float> getPeopleDetector64x128();
void detect(const GpuMat& img, vector<Point>& found_locations,
double hit_threshold=0, Size win_stride=Size(),
Size padding=Size());
void detectMultiScale(const GpuMat& img, vector<Rect>& found_locations,
double hit_threshold=0, Size win_stride=Size(),
Size padding=Size(), double scale0=1.05,
int group_threshold=2);
void getDescriptors(const GpuMat& img, Size win_stride,
GpuMat& descriptors,
int descr_format=DESCR_FORMAT_COL_BY_COL);
Size win_size;
Size block_size;
Size block_stride;
Size cell_size;
int nbins;
double win_sigma;
double threshold_L2hys;
bool gamma_correction;
int nlevels;
private:
// Hidden
}
Interfaces of all methods are kept similar to the CPU HOG descriptor and detector analogues as much as possible.
Creates the HOG descriptor and detector.
Parameters: |
|
---|
Returns the number of coefficients required for the classification.
Returns the block histogram size.
Sets coefficients for the linear SVM classifier.
Returns coefficients of the classifier trained for people detection (for default window size).
Returns coefficients of the classifier trained for people detection (for 48x96 windows).
Returns coefficients of the classifier trained for people detection (for 64x128 windows).
Performs object detection without a multi-scale window.
Parameters: |
|
---|
Performs object detection with a multi-scale window.
Parameters: |
|
---|
Returns block descriptors computed for the whole image. The function is mainly used to learn the classifier.
Parameters: |
|
---|
Cascade classifier class used for object detection.
class CV_EXPORTS CascadeClassifier_GPU
{
public:
CascadeClassifier_GPU();
CascadeClassifier_GPU(const string& filename);
~CascadeClassifier_GPU();
bool empty() const;
bool load(const string& filename);
void release();
/* Returns number of detected objects */
int detectMultiScale( const GpuMat& image, GpuMat& objectsBuf, double scaleFactor=1.2, int minNeighbors=4, Size minSize=Size());
/* Finds only the largest object. Special mode if training is required.*/
bool findLargestObject;
/* Draws rectangles in input image */
bool visualizeInPlace;
Size getClassifierSize() const;
};
Loads the classifier from a file.
Parameters: |
|
---|
Checks whether the classifier is loaded or not.
Loads the classifier from a file. The previous content is destroyed.
Parameters: |
|
---|
Destroys the loaded classifier.
Detects objects of different sizes in the input image. The detected objects are returned as a list of rectangles.
Parameters: |
|
---|
The function returns the number of detected objects, so you can retrieve them as in the following example:
gpu::CascadeClassifier_GPU cascade_gpu(...);
Mat image_cpu = imread(...)
GpuMat image_gpu(image_cpu);
GpuMat objbuf;
int detections_number = cascade_gpu.detectMultiScale( image_gpu,
objbuf, 1.2, minNeighbors);
Mat obj_host;
// download only detected number of rectangles
objbuf.colRange(0, detections_number).download(obj_host);
Rect* faces = obj_host.ptr<Rect>();
for(int i = 0; i < detections_num; ++i)
cv::rectangle(image_cpu, faces[i], Scalar(255));
imshow("Faces", image_cpu);
[Dalal2005] | Navneet Dalal and Bill Triggs. Histogram of oriented gradients for human detection. 2005. |