提交 eccf2fa4 编写于 作者: T Tomoaki Teshima

follow other interface

  * remove useHW option
  * update test
上级 b2ad7cd9
......@@ -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.
......
......@@ -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;
}
......
......@@ -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<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&)
{
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
......
Markdown is supported
0% .
You are about to add 0 people to the discussion. Proceed with caution.
先完成此消息的编辑!
想要评论请 注册