Book a Demo!
CoCalc Logo Icon
StoreFeaturesDocsShareSupportNewsAboutPoliciesSign UpSign In
Tetragramm
GitHub Repository: Tetragramm/opencv
Path: blob/master/modules/core/perf/perf_cvround.cpp
16354 views
1
#include "perf_precomp.hpp"
2
3
namespace opencv_test
4
{
5
using namespace perf;
6
7
template <typename T>
8
static void CvRoundMat(const cv::Mat & src, cv::Mat & dst)
9
{
10
for (int y = 0; y < dst.rows; ++y)
11
{
12
const T * sptr = src.ptr<T>(y);
13
int * dptr = dst.ptr<int>(y);
14
15
for (int x = 0; x < dst.cols; ++x)
16
dptr[x] = cvRound(sptr[x]);
17
}
18
}
19
20
PERF_TEST_P(Size_MatType, CvRound_Float,
21
testing::Combine(testing::Values(TYPICAL_MAT_SIZES),
22
testing::Values(CV_32FC1, CV_64FC1)))
23
{
24
Size size = get<0>(GetParam());
25
int type = get<1>(GetParam()), depth = CV_MAT_DEPTH(type);
26
27
cv::Mat src(size, type), dst(size, CV_32SC1);
28
29
declare.in(src, WARMUP_RNG).out(dst);
30
31
if (depth == CV_32F)
32
{
33
TEST_CYCLE()
34
CvRoundMat<float>(src, dst);
35
}
36
else if (depth == CV_64F)
37
{
38
TEST_CYCLE()
39
CvRoundMat<double>(src, dst);
40
}
41
42
SANITY_CHECK_NOTHING();
43
}
44
45
} // namespace
46
47