follow other interface
* remove useHW option * update test
This commit is contained in:
@@ -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,8 +5117,9 @@ 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)
|
||||||
{
|
{
|
||||||
|
bool useHW = true;
|
||||||
if ( checkHardwareSupport(CV_CPU_FP16) == false )
|
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
|
||||||
|
|||||||
Reference in New Issue
Block a user