From eccf2fa4c3a48832c4b3855fea1674100579e13a Mon Sep 17 00:00:00 2001 From: Tomoaki Teshima Date: Mon, 6 Jun 2016 08:56:37 +0900 Subject: [PATCH] follow other interface * remove useHW option * update test --- modules/core/include/opencv2/core.hpp | 2 +- modules/core/src/convert.cpp | 5 +++-- modules/core/test/test_arithm.cpp | 18 ++++++++++-------- 3 files changed, 14 insertions(+), 11 deletions(-) diff --git a/modules/core/include/opencv2/core.hpp b/modules/core/include/opencv2/core.hpp index fa7ab469b2..fef0395fef 100644 --- a/modules/core/include/opencv2/core.hpp +++ b/modules/core/include/opencv2/core.hpp @@ -533,7 +533,7 @@ CV_16S to represent the bit depth. If the input array is neither of them, it'll @param dst output array. @param useHW if possible use HW SIMD instruction to convert */ -CV_EXPORTS_W void convertFp16(InputArray src, OutputArray dst, bool useHW = true); +CV_EXPORTS_W void convertFp16(InputArray src, OutputArray dst); /** @brief Performs a look-up table transform of an array. diff --git a/modules/core/src/convert.cpp b/modules/core/src/convert.cpp index 4ff9830db8..431942fbea 100644 --- a/modules/core/src/convert.cpp +++ b/modules/core/src/convert.cpp @@ -5117,9 +5117,10 @@ void cv::convertScaleAbs( InputArray _src, OutputArray _dst, double alpha, doubl } } -void cv::convertFp16( InputArray _src, OutputArray _dst, bool useHW ) +void cv::convertFp16( InputArray _src, OutputArray _dst) { - if ( checkHardwareSupport(CV_CPU_FP16) == false) + bool useHW = true; + if ( checkHardwareSupport(CV_CPU_FP16) == false ) { useHW = false; } diff --git a/modules/core/test/test_arithm.cpp b/modules/core/test/test_arithm.cpp index 58974a8f5c..3548765295 100644 --- a/modules/core/test/test_arithm.cpp +++ b/modules/core/test/test_arithm.cpp @@ -742,27 +742,29 @@ struct ConvertScaleFp16Op : public BaseElemWiseOp ConvertScaleFp16Op() : BaseElemWiseOp(1, FIX_BETA+REAL_GAMMA, 1, 1, Scalar::all(0)), nextRange(0) { } void op(const vector& src, Mat& dst, const Mat&) { - convertFp16(src[0], dst, true); + Mat m; + convertFp16(src[0], m); + convertFp16(m, dst); } void refop(const vector& src, Mat& dst, const Mat&) { - convertFp16(src[0], dst, false); + cvtest::copy(src[0], dst); } int getRandomType(RNG&) { - // 0: FP32 -> FP16 - // 1: FP16 -> FP32 + // 0: FP32 -> FP16 -> FP32 + // 1: FP16 -> FP32 -> FP16 int srctype = (nextRange & 1) == 0 ? CV_32F : CV_16S; return srctype; } void getValueRange(int, double& minval, double& maxval) { - // 0: FP32 -> FP16 - // 1: FP16 -> FP32 + // 0: FP32 -> FP16 -> FP32 + // 1: FP16 -> FP32 -> FP16 if( (nextRange & 1) == 0 ) { - // largest integer number that fp16 can express - maxval = 65504.f; + // largest integer number that fp16 can express exactly + maxval = 2048.f; minval = -maxval; } else