1 #include "perf_precomp.hpp"
7 CV_ENUM(CvtMode, CV_YUV2BGR, CV_YUV2RGB, //YUV
8 CV_YUV420i2BGR, CV_YUV420i2RGB, CV_YUV420sp2BGR, CV_YUV420sp2RGB, //YUV420
9 CV_RGB2GRAY, CV_RGBA2GRAY, CV_BGR2GRAY, CV_BGRA2GRAY, //Gray
10 CV_GRAY2RGB, CV_GRAY2RGBA/*, CV_GRAY2BGR, CV_GRAY2BGRA*/ //Gray2
13 typedef std::tr1::tuple<Size, CvtMode> Size_CvtMode_t;
14 typedef perf::TestBaseWithParam<Size_CvtMode_t> Size_CvtMode;
16 typedef std::tr1::tuple<Size, CvtMode, int> Size_CvtMode_OutChNum_t;
17 typedef perf::TestBaseWithParam<Size_CvtMode_OutChNum_t> Size_CvtMode_OutChNum;
21 // void cvtColor(InputArray src, OutputArray dst, int code, int dstCn=0 )
25 PERF_TEST_P( Size_CvtMode_OutChNum, cvtColorYUV,
27 testing::Values( TYPICAL_MAT_SIZES ),
28 testing::Values( (int)CV_YUV2BGR, (int)CV_YUV2RGB ),
29 testing::Values( 3, 4 )
33 Size sz = std::tr1::get<0>(GetParam());
34 int mode = std::tr1::get<1>(GetParam());
35 int ch = std::tr1::get<2>(GetParam());
38 Mat dst(sz, CV_8UC(ch));
40 declare.in(src, WARMUP_RNG).out(dst);
42 TEST_CYCLE(100) { cvtColor(src, dst, mode, ch); }
48 PERF_TEST_P( Size_CvtMode_OutChNum, cvtColorYUV420,
50 testing::Values( szVGA, sz720p, sz1080p, Size(130, 60) ),
51 testing::Values( (int)CV_YUV420i2BGR, (int)CV_YUV420i2RGB, (int)CV_YUV420sp2BGR, (int)CV_YUV420sp2RGB ),
52 testing::Values( 3, 4 )
56 Size sz = std::tr1::get<0>(GetParam());
57 int mode = std::tr1::get<1>(GetParam());
58 int ch = std::tr1::get<2>(GetParam());
60 Mat src(sz.height+sz.height/2, sz.width, CV_8UC1);
61 Mat dst(sz, CV_8UC(ch));
63 declare.in(src, WARMUP_RNG).out(dst);
65 TEST_CYCLE(100) { cvtColor(src, dst, mode, ch); }
71 PERF_TEST_P( Size_CvtMode, cvtColorGray,
73 testing::Values( TYPICAL_MAT_SIZES ),
74 testing::Values( (int)CV_RGB2GRAY, (int)CV_RGBA2GRAY, (int)CV_BGR2GRAY, (int)CV_BGRA2GRAY )
78 Size sz = std::tr1::get<0>(GetParam());
79 int mode = std::tr1::get<1>(GetParam());
81 Mat src(sz, CV_8UC((mode==CV_RGBA2GRAY || mode==CV_BGRA2GRAY)?4:3));
84 declare.in(src, WARMUP_RNG).out(dst);
86 TEST_CYCLE(100) { cvtColor(src, dst, mode); }
92 PERF_TEST_P( Size_CvtMode, cvtColorGray2,
94 testing::Values( TYPICAL_MAT_SIZES ),
95 testing::Values( (int)CV_GRAY2RGB, (int)CV_GRAY2RGBA/*, CV_GRAY2BGR, CV_GRAY2BGRA*/ )
99 Size sz = std::tr1::get<0>(GetParam());
100 int mode = std::tr1::get<1>(GetParam());
102 Mat src(sz, CV_8UC1);
103 Mat dst(sz, CV_8UC((mode==CV_GRAY2RGBA || mode==CV_GRAY2BGRA)?4:3));
105 declare.in(src, WARMUP_RNG).out(dst);
107 TEST_CYCLE(100) { cvtColor(src, dst, mode); }