Book a Demo!
CoCalc Logo Icon
StoreFeaturesDocsShareSupportNewsAboutPoliciesSign UpSign In
Tetragramm
GitHub Repository: Tetragramm/opencv
Path: blob/master/modules/objdetect/perf/opencl/perf_cascades.cpp
16358 views
1
#include "../perf_precomp.hpp"
2
#include <opencv2/imgproc.hpp>
3
4
#include "opencv2/ts/ocl_perf.hpp"
5
6
namespace opencv_test
7
{
8
using namespace perf;
9
10
typedef tuple<std::string, std::string, int> Cascade_Image_MinSize_t;
11
typedef perf::TestBaseWithParam<Cascade_Image_MinSize_t> Cascade_Image_MinSize;
12
13
#ifdef HAVE_OPENCL
14
15
OCL_PERF_TEST_P(Cascade_Image_MinSize, CascadeClassifier,
16
testing::Combine(
17
testing::Values( string("cv/cascadeandhog/cascades/haarcascade_frontalface_alt.xml"),
18
string("cv/cascadeandhog/cascades/haarcascade_frontalface_alt2.xml"),
19
string("cv/cascadeandhog/cascades/lbpcascade_frontalface.xml") ),
20
testing::Values( string("cv/shared/lena.png"),
21
string("cv/cascadeandhog/images/bttf301.png"),
22
string("cv/cascadeandhog/images/class57.png") ),
23
testing::Values(30, 64, 90) ) )
24
{
25
const string cascadePath = get<0>(GetParam());
26
const string imagePath = get<1>(GetParam());
27
int min_size = get<2>(GetParam());
28
Size minSize(min_size, min_size);
29
30
CascadeClassifier cc( getDataPath(cascadePath) );
31
if (cc.empty())
32
FAIL() << "Can't load cascade file: " << getDataPath(cascadePath);
33
34
Mat img = imread(getDataPath(imagePath), IMREAD_GRAYSCALE);
35
if (img.empty())
36
FAIL() << "Can't load source image: " << getDataPath(imagePath);
37
38
vector<Rect> faces;
39
40
equalizeHist(img, img);
41
declare.in(img).time(60);
42
43
UMat uimg = img.getUMat(ACCESS_READ);
44
45
while(next())
46
{
47
faces.clear();
48
cvtest::ocl::perf::safeFinish();
49
50
startTimer();
51
cc.detectMultiScale(uimg, faces, 1.1, 3, 0, minSize);
52
stopTimer();
53
}
54
55
sort(faces.begin(), faces.end(), comparators::RectLess());
56
SANITY_CHECK(faces, min_size/5);
57
}
58
59
#endif //HAVE_OPENCL
60
61
} // namespace
62
63