|
41 | 41 | //M*/
|
42 | 42 |
|
43 | 43 | #include "perf_precomp.hpp"
|
| 44 | +#include "opencv2/ts/ocl_perf.hpp" |
44 | 45 |
|
45 | 46 | using namespace std;
|
46 | 47 | using namespace std::tr1;
|
@@ -91,37 +92,26 @@ namespace
|
91 | 92 | class ZeroOpticalFlow : public DenseOpticalFlowExt
|
92 | 93 | {
|
93 | 94 | public:
|
94 |
| - void calc(InputArray frame0, InputArray, OutputArray flow1, OutputArray flow2) |
| 95 | + virtual void calc(InputArray frame0, InputArray, OutputArray flow1, OutputArray flow2) |
95 | 96 | {
|
96 | 97 | cv::Size size = frame0.size();
|
97 | 98 |
|
98 | 99 | if (!flow2.needed())
|
99 | 100 | {
|
100 | 101 | flow1.create(size, CV_32FC2);
|
101 |
| - |
102 |
| - if (flow1.kind() == cv::_InputArray::GPU_MAT) |
103 |
| - flow1.getGpuMatRef().setTo(cv::Scalar::all(0)); |
104 |
| - else |
105 |
| - flow1.getMatRef().setTo(cv::Scalar::all(0)); |
| 102 | + flow1.setTo(cv::Scalar::all(0)); |
106 | 103 | }
|
107 | 104 | else
|
108 | 105 | {
|
109 | 106 | flow1.create(size, CV_32FC1);
|
110 | 107 | flow2.create(size, CV_32FC1);
|
111 | 108 |
|
112 |
| - if (flow1.kind() == cv::_InputArray::GPU_MAT) |
113 |
| - flow1.getGpuMatRef().setTo(cv::Scalar::all(0)); |
114 |
| - else |
115 |
| - flow1.getMatRef().setTo(cv::Scalar::all(0)); |
116 |
| - |
117 |
| - if (flow2.kind() == cv::_InputArray::GPU_MAT) |
118 |
| - flow2.getGpuMatRef().setTo(cv::Scalar::all(0)); |
119 |
| - else |
120 |
| - flow2.getMatRef().setTo(cv::Scalar::all(0)); |
| 109 | + flow1.setTo(cv::Scalar::all(0)); |
| 110 | + flow2.setTo(cv::Scalar::all(0)); |
121 | 111 | }
|
122 | 112 | }
|
123 | 113 |
|
124 |
| - void collectGarbage() |
| 114 | + virtual void collectGarbage() |
125 | 115 | {
|
126 | 116 | }
|
127 | 117 | };
|
@@ -181,3 +171,48 @@ PERF_TEST_P(Size_MatType, SuperResolution_BTVL1,
|
181 | 171 | CPU_SANITY_CHECK(dst);
|
182 | 172 | }
|
183 | 173 | }
|
| 174 | + |
| 175 | +#ifdef HAVE_OPENCL |
| 176 | + |
| 177 | +namespace cvtest { |
| 178 | +namespace ocl { |
| 179 | + |
| 180 | +typedef Size_MatType SuperResolution_BTVL1; |
| 181 | + |
| 182 | +OCL_PERF_TEST_P(SuperResolution_BTVL1 ,BTVL1, |
| 183 | + Combine(Values(szSmall64, szSmall128), |
| 184 | + Values(MatType(CV_8UC1), MatType(CV_8UC3)))) |
| 185 | +{ |
| 186 | + Size_MatType_t params = GetParam(); |
| 187 | + const Size size = get<0>(params); |
| 188 | + const int type = get<1>(params); |
| 189 | + |
| 190 | + Mat frame(size, type); |
| 191 | + UMat dst(1, 1, 0); |
| 192 | + declare.in(frame, WARMUP_RNG); |
| 193 | + |
| 194 | + const int scale = 2; |
| 195 | + const int iterations = 50; |
| 196 | + const int temporalAreaRadius = 1; |
| 197 | + |
| 198 | + Ptr<DenseOpticalFlowExt> opticalFlow(new ZeroOpticalFlow); |
| 199 | + Ptr<SuperResolution> superRes = createSuperResolution_BTVL1(); |
| 200 | + |
| 201 | + superRes->set("scale", scale); |
| 202 | + superRes->set("iterations", iterations); |
| 203 | + superRes->set("temporalAreaRadius", temporalAreaRadius); |
| 204 | + superRes->set("opticalFlow", opticalFlow); |
| 205 | + |
| 206 | + superRes->setInput(makePtr<OneFrameSource_CPU>(frame)); |
| 207 | + |
| 208 | + // skip first frame |
| 209 | + superRes->nextFrame(dst); |
| 210 | + |
| 211 | + OCL_TEST_CYCLE_N(10) superRes->nextFrame(dst); |
| 212 | + |
| 213 | + SANITY_CHECK_NOTHING(); |
| 214 | +} |
| 215 | + |
| 216 | +} } // namespace cvtest::ocl |
| 217 | + |
| 218 | +#endif // HAVE_OPENCL |
0 commit comments