mirror of
https://github.com/opencv/opencv.git
synced 2025-06-17 15:20:51 +08:00
Overload detectMultiScale API for ocl::haar.
This commit is contained in:
parent
dd942df08b
commit
8c1eb5bf0e
@ -898,6 +898,9 @@ namespace cv
|
|||||||
|
|
||||||
CvSeq* oclHaarDetectObjects(oclMat &gimg, CvMemStorage *storage, double scaleFactor,
|
CvSeq* oclHaarDetectObjects(oclMat &gimg, CvMemStorage *storage, double scaleFactor,
|
||||||
int minNeighbors, int flags, CvSize minSize = cvSize(0, 0), CvSize maxSize = cvSize(0, 0));
|
int minNeighbors, int flags, CvSize minSize = cvSize(0, 0), CvSize maxSize = cvSize(0, 0));
|
||||||
|
void detectMultiScale(oclMat &image, CV_OUT std::vector<cv::Rect>& faces,
|
||||||
|
double scaleFactor = 1.1, int minNeighbors = 3, int flags = 0,
|
||||||
|
Size minSize = Size(), Size maxSize = Size());
|
||||||
};
|
};
|
||||||
|
|
||||||
class CV_EXPORTS OclCascadeClassifierBuf : public cv::CascadeClassifier
|
class CV_EXPORTS OclCascadeClassifierBuf : public cv::CascadeClassifier
|
||||||
|
@ -1186,6 +1186,28 @@ CvSeq *cv::ocl::OclCascadeClassifier::oclHaarDetectObjects( oclMat &gimg, CvMemS
|
|||||||
return result_seq;
|
return result_seq;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
||||||
|
struct getRect
|
||||||
|
{
|
||||||
|
Rect operator()(const CvAvgComp &e) const
|
||||||
|
{
|
||||||
|
return e.rect;
|
||||||
|
}
|
||||||
|
};
|
||||||
|
|
||||||
|
void cv::ocl::OclCascadeClassifier::detectMultiScale(oclMat &gimg, CV_OUT std::vector<cv::Rect>& faces,
|
||||||
|
double scaleFactor, int minNeighbors, int flags,
|
||||||
|
Size minSize, Size maxSize)
|
||||||
|
{
|
||||||
|
CvSeq* _objects;
|
||||||
|
MemStorage storage(cvCreateMemStorage(0));
|
||||||
|
_objects = oclHaarDetectObjects(gimg, storage, scaleFactor, minNeighbors, flags, minSize, maxSize);
|
||||||
|
vector<CvAvgComp> vecAvgComp;
|
||||||
|
Seq<CvAvgComp>(_objects).copyTo(vecAvgComp);
|
||||||
|
faces.resize(vecAvgComp.size());
|
||||||
|
std::transform(vecAvgComp.begin(), vecAvgComp.end(), faces.begin(), getRect());
|
||||||
|
}
|
||||||
|
|
||||||
struct OclBuffers
|
struct OclBuffers
|
||||||
{
|
{
|
||||||
cl_mem stagebuffer;
|
cl_mem stagebuffer;
|
||||||
@ -1197,13 +1219,6 @@ struct OclBuffers
|
|||||||
cl_mem newnodebuffer;
|
cl_mem newnodebuffer;
|
||||||
};
|
};
|
||||||
|
|
||||||
struct getRect
|
|
||||||
{
|
|
||||||
Rect operator()(const CvAvgComp &e) const
|
|
||||||
{
|
|
||||||
return e.rect;
|
|
||||||
}
|
|
||||||
};
|
|
||||||
|
|
||||||
void cv::ocl::OclCascadeClassifierBuf::detectMultiScale(oclMat &gimg, CV_OUT std::vector<cv::Rect>& faces,
|
void cv::ocl::OclCascadeClassifierBuf::detectMultiScale(oclMat &gimg, CV_OUT std::vector<cv::Rect>& faces,
|
||||||
double scaleFactor, int minNeighbors, int flags,
|
double scaleFactor, int minNeighbors, int flags,
|
||||||
|
Loading…
Reference in New Issue
Block a user