follow other interface

* remove useHW option
  * update test
pull/6830/head
Tomoaki Teshima 9 years ago
parent b2ad7cd9c0
commit eccf2fa4c3
  1. 2
      modules/core/include/opencv2/core.hpp
  2. 5
      modules/core/src/convert.cpp
  3. 18
      modules/core/test/test_arithm.cpp

@ -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 dst output array.
@param useHW if possible use HW SIMD instruction to convert @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. /** @brief Performs a look-up table transform of an array.

@ -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; useHW = false;
} }

@ -742,27 +742,29 @@ struct ConvertScaleFp16Op : public BaseElemWiseOp
ConvertScaleFp16Op() : BaseElemWiseOp(1, FIX_BETA+REAL_GAMMA, 1, 1, Scalar::all(0)), nextRange(0) { } ConvertScaleFp16Op() : BaseElemWiseOp(1, FIX_BETA+REAL_GAMMA, 1, 1, Scalar::all(0)), nextRange(0) { }
void op(const vector<Mat>& src, Mat& dst, const Mat&) void op(const vector<Mat>& src, Mat& dst, const Mat&)
{ {
convertFp16(src[0], dst, true); Mat m;
convertFp16(src[0], m);
convertFp16(m, dst);
} }
void refop(const vector<Mat>& src, Mat& dst, const Mat&) void refop(const vector<Mat>& src, Mat& dst, const Mat&)
{ {
convertFp16(src[0], dst, false); cvtest::copy(src[0], dst);
} }
int getRandomType(RNG&) int getRandomType(RNG&)
{ {
// 0: FP32 -> FP16 // 0: FP32 -> FP16 -> FP32
// 1: FP16 -> FP32 // 1: FP16 -> FP32 -> FP16
int srctype = (nextRange & 1) == 0 ? CV_32F : CV_16S; int srctype = (nextRange & 1) == 0 ? CV_32F : CV_16S;
return srctype; return srctype;
} }
void getValueRange(int, double& minval, double& maxval) void getValueRange(int, double& minval, double& maxval)
{ {
// 0: FP32 -> FP16 // 0: FP32 -> FP16 -> FP32
// 1: FP16 -> FP32 // 1: FP16 -> FP32 -> FP16
if( (nextRange & 1) == 0 ) if( (nextRange & 1) == 0 )
{ {
// largest integer number that fp16 can express // largest integer number that fp16 can express exactly
maxval = 65504.f; maxval = 2048.f;
minval = -maxval; minval = -maxval;
} }
else else

Loading…
Cancel
Save