46 lines
		
	
	
		
			1.0 KiB
		
	
	
	
		
			C++
		
	
	
	
	
	
			
		
		
	
	
			46 lines
		
	
	
		
			1.0 KiB
		
	
	
	
		
			C++
		
	
	
	
	
	
| #include "perf_precomp.hpp"
 | |
| 
 | |
| using namespace std;
 | |
| using namespace cv;
 | |
| using namespace perf;
 | |
| using std::tr1::make_tuple;
 | |
| using std::tr1::get;
 | |
| 
 | |
| template <typename T>
 | |
| static void CvRoundMat(const cv::Mat & src, cv::Mat & dst)
 | |
| {
 | |
|     for (int y = 0; y < dst.rows; ++y)
 | |
|     {
 | |
|         const T * sptr = src.ptr<T>(y);
 | |
|         int * dptr = dst.ptr<int>(y);
 | |
| 
 | |
|         for (int x = 0; x < dst.cols; ++x)
 | |
|             dptr[x] = cvRound(sptr[x]);
 | |
|     }
 | |
| }
 | |
| 
 | |
| PERF_TEST_P(Size_MatType, CvRound_Float,
 | |
|             testing::Combine(testing::Values(TYPICAL_MAT_SIZES),
 | |
|                              testing::Values(CV_32FC1, CV_64FC1)))
 | |
| {
 | |
|     Size size = get<0>(GetParam());
 | |
|     int type = get<1>(GetParam()), depth = CV_MAT_DEPTH(type);
 | |
| 
 | |
|     cv::Mat src(size, type), dst(size, CV_32SC1);
 | |
| 
 | |
|     declare.in(src, WARMUP_RNG).out(dst);
 | |
| 
 | |
|     if (depth == CV_32F)
 | |
|     {
 | |
|         TEST_CYCLE()
 | |
|             CvRoundMat<float>(src, dst);
 | |
|     }
 | |
|     else if (depth == CV_64F)
 | |
|     {
 | |
|         TEST_CYCLE()
 | |
|             CvRoundMat<double>(src, dst);
 | |
|     }
 | |
| 
 | |
|     SANITY_CHECK_NOTHING();
 | |
| }
 | 
