used new device layer for cv::gpu::addWeighted
This commit is contained in:
@@ -449,517 +449,6 @@ void cv::cuda::max(InputArray src1, InputArray src2, OutputArray dst, Stream& st
|
||||
arithm_op(src1, src2, dst, noArray(), 1.0, -1, stream, minMaxMat, minMaxScalar, MAX_OP);
|
||||
}
|
||||
|
||||
////////////////////////////////////////////////////////////////////////
|
||||
// addWeighted
|
||||
|
||||
namespace arithm
|
||||
{
|
||||
template <typename T1, typename T2, typename D>
|
||||
void addWeighted(PtrStepSzb src1, double alpha, PtrStepSzb src2, double beta, double gamma, PtrStepSzb dst, cudaStream_t stream);
|
||||
}
|
||||
|
||||
void cv::cuda::addWeighted(InputArray _src1, double alpha, InputArray _src2, double beta, double gamma, OutputArray _dst, int ddepth, Stream& stream)
|
||||
{
|
||||
typedef void (*func_t)(PtrStepSzb src1, double alpha, PtrStepSzb src2, double beta, double gamma, PtrStepSzb dst, cudaStream_t stream);
|
||||
static const func_t funcs[7][7][7] =
|
||||
{
|
||||
{
|
||||
{
|
||||
arithm::addWeighted<unsigned char, unsigned char, unsigned char >,
|
||||
arithm::addWeighted<unsigned char, unsigned char, signed char >,
|
||||
arithm::addWeighted<unsigned char, unsigned char, unsigned short>,
|
||||
arithm::addWeighted<unsigned char, unsigned char, short >,
|
||||
arithm::addWeighted<unsigned char, unsigned char, int >,
|
||||
arithm::addWeighted<unsigned char, unsigned char, float >,
|
||||
arithm::addWeighted<unsigned char, unsigned char, double>
|
||||
},
|
||||
{
|
||||
arithm::addWeighted<unsigned char, signed char, unsigned char >,
|
||||
arithm::addWeighted<unsigned char, signed char, signed char >,
|
||||
arithm::addWeighted<unsigned char, signed char, unsigned short>,
|
||||
arithm::addWeighted<unsigned char, signed char, short >,
|
||||
arithm::addWeighted<unsigned char, signed char, int >,
|
||||
arithm::addWeighted<unsigned char, signed char, float >,
|
||||
arithm::addWeighted<unsigned char, signed char, double>
|
||||
},
|
||||
{
|
||||
arithm::addWeighted<unsigned char, unsigned short, unsigned char >,
|
||||
arithm::addWeighted<unsigned char, unsigned short, signed char >,
|
||||
arithm::addWeighted<unsigned char, unsigned short, unsigned short>,
|
||||
arithm::addWeighted<unsigned char, unsigned short, short >,
|
||||
arithm::addWeighted<unsigned char, unsigned short, int >,
|
||||
arithm::addWeighted<unsigned char, unsigned short, float >,
|
||||
arithm::addWeighted<unsigned char, unsigned short, double>
|
||||
},
|
||||
{
|
||||
arithm::addWeighted<unsigned char, short, unsigned char >,
|
||||
arithm::addWeighted<unsigned char, short, signed char >,
|
||||
arithm::addWeighted<unsigned char, short, unsigned short>,
|
||||
arithm::addWeighted<unsigned char, short, short >,
|
||||
arithm::addWeighted<unsigned char, short, int >,
|
||||
arithm::addWeighted<unsigned char, short, float >,
|
||||
arithm::addWeighted<unsigned char, short, double>
|
||||
},
|
||||
{
|
||||
arithm::addWeighted<unsigned char, int, unsigned char >,
|
||||
arithm::addWeighted<unsigned char, int, signed char >,
|
||||
arithm::addWeighted<unsigned char, int, unsigned short>,
|
||||
arithm::addWeighted<unsigned char, int, short >,
|
||||
arithm::addWeighted<unsigned char, int, int >,
|
||||
arithm::addWeighted<unsigned char, int, float >,
|
||||
arithm::addWeighted<unsigned char, int, double>
|
||||
},
|
||||
{
|
||||
arithm::addWeighted<unsigned char, float, unsigned char >,
|
||||
arithm::addWeighted<unsigned char, float, signed char >,
|
||||
arithm::addWeighted<unsigned char, float, unsigned short>,
|
||||
arithm::addWeighted<unsigned char, float, short >,
|
||||
arithm::addWeighted<unsigned char, float, int >,
|
||||
arithm::addWeighted<unsigned char, float, float >,
|
||||
arithm::addWeighted<unsigned char, float, double>
|
||||
},
|
||||
{
|
||||
arithm::addWeighted<unsigned char, double, unsigned char >,
|
||||
arithm::addWeighted<unsigned char, double, signed char >,
|
||||
arithm::addWeighted<unsigned char, double, unsigned short>,
|
||||
arithm::addWeighted<unsigned char, double, short >,
|
||||
arithm::addWeighted<unsigned char, double, int >,
|
||||
arithm::addWeighted<unsigned char, double, float >,
|
||||
arithm::addWeighted<unsigned char, double, double>
|
||||
}
|
||||
},
|
||||
{
|
||||
{
|
||||
0/*arithm::addWeighted<signed char, unsigned char, unsigned char >*/,
|
||||
0/*arithm::addWeighted<signed char, unsigned char, signed char >*/,
|
||||
0/*arithm::addWeighted<signed char, unsigned char, unsigned short>*/,
|
||||
0/*arithm::addWeighted<signed char, unsigned char, short >*/,
|
||||
0/*arithm::addWeighted<signed char, unsigned char, int >*/,
|
||||
0/*arithm::addWeighted<signed char, unsigned char, float >*/,
|
||||
0/*arithm::addWeighted<signed char, unsigned char, double>*/
|
||||
},
|
||||
{
|
||||
arithm::addWeighted<signed char, signed char, unsigned char >,
|
||||
arithm::addWeighted<signed char, signed char, signed char >,
|
||||
arithm::addWeighted<signed char, signed char, unsigned short>,
|
||||
arithm::addWeighted<signed char, signed char, short >,
|
||||
arithm::addWeighted<signed char, signed char, int >,
|
||||
arithm::addWeighted<signed char, signed char, float >,
|
||||
arithm::addWeighted<signed char, signed char, double>
|
||||
},
|
||||
{
|
||||
arithm::addWeighted<signed char, unsigned short, unsigned char >,
|
||||
arithm::addWeighted<signed char, unsigned short, signed char >,
|
||||
arithm::addWeighted<signed char, unsigned short, unsigned short>,
|
||||
arithm::addWeighted<signed char, unsigned short, short >,
|
||||
arithm::addWeighted<signed char, unsigned short, int >,
|
||||
arithm::addWeighted<signed char, unsigned short, float >,
|
||||
arithm::addWeighted<signed char, unsigned short, double>
|
||||
},
|
||||
{
|
||||
arithm::addWeighted<signed char, short, unsigned char >,
|
||||
arithm::addWeighted<signed char, short, signed char >,
|
||||
arithm::addWeighted<signed char, short, unsigned short>,
|
||||
arithm::addWeighted<signed char, short, short >,
|
||||
arithm::addWeighted<signed char, short, int >,
|
||||
arithm::addWeighted<signed char, short, float >,
|
||||
arithm::addWeighted<signed char, short, double>
|
||||
},
|
||||
{
|
||||
arithm::addWeighted<signed char, int, unsigned char >,
|
||||
arithm::addWeighted<signed char, int, signed char >,
|
||||
arithm::addWeighted<signed char, int, unsigned short>,
|
||||
arithm::addWeighted<signed char, int, short >,
|
||||
arithm::addWeighted<signed char, int, int >,
|
||||
arithm::addWeighted<signed char, int, float >,
|
||||
arithm::addWeighted<signed char, int, double>
|
||||
},
|
||||
{
|
||||
arithm::addWeighted<signed char, float, unsigned char >,
|
||||
arithm::addWeighted<signed char, float, signed char >,
|
||||
arithm::addWeighted<signed char, float, unsigned short>,
|
||||
arithm::addWeighted<signed char, float, short >,
|
||||
arithm::addWeighted<signed char, float, int >,
|
||||
arithm::addWeighted<signed char, float, float >,
|
||||
arithm::addWeighted<signed char, float, double>
|
||||
},
|
||||
{
|
||||
arithm::addWeighted<signed char, double, unsigned char >,
|
||||
arithm::addWeighted<signed char, double, signed char >,
|
||||
arithm::addWeighted<signed char, double, unsigned short>,
|
||||
arithm::addWeighted<signed char, double, short >,
|
||||
arithm::addWeighted<signed char, double, int >,
|
||||
arithm::addWeighted<signed char, double, float >,
|
||||
arithm::addWeighted<signed char, double, double>
|
||||
}
|
||||
},
|
||||
{
|
||||
{
|
||||
0/*arithm::addWeighted<unsigned short, unsigned char, unsigned char >*/,
|
||||
0/*arithm::addWeighted<unsigned short, unsigned char, signed char >*/,
|
||||
0/*arithm::addWeighted<unsigned short, unsigned char, unsigned short>*/,
|
||||
0/*arithm::addWeighted<unsigned short, unsigned char, short >*/,
|
||||
0/*arithm::addWeighted<unsigned short, unsigned char, int >*/,
|
||||
0/*arithm::addWeighted<unsigned short, unsigned char, float >*/,
|
||||
0/*arithm::addWeighted<unsigned short, unsigned char, double>*/
|
||||
},
|
||||
{
|
||||
0/*arithm::addWeighted<unsigned short, signed char, unsigned char >*/,
|
||||
0/*arithm::addWeighted<unsigned short, signed char, signed char >*/,
|
||||
0/*arithm::addWeighted<unsigned short, signed char, unsigned short>*/,
|
||||
0/*arithm::addWeighted<unsigned short, signed char, short >*/,
|
||||
0/*arithm::addWeighted<unsigned short, signed char, int >*/,
|
||||
0/*arithm::addWeighted<unsigned short, signed char, float >*/,
|
||||
0/*arithm::addWeighted<unsigned short, signed char, double>*/
|
||||
},
|
||||
{
|
||||
arithm::addWeighted<unsigned short, unsigned short, unsigned char >,
|
||||
arithm::addWeighted<unsigned short, unsigned short, signed char >,
|
||||
arithm::addWeighted<unsigned short, unsigned short, unsigned short>,
|
||||
arithm::addWeighted<unsigned short, unsigned short, short >,
|
||||
arithm::addWeighted<unsigned short, unsigned short, int >,
|
||||
arithm::addWeighted<unsigned short, unsigned short, float >,
|
||||
arithm::addWeighted<unsigned short, unsigned short, double>
|
||||
},
|
||||
{
|
||||
arithm::addWeighted<unsigned short, short, unsigned char >,
|
||||
arithm::addWeighted<unsigned short, short, signed char >,
|
||||
arithm::addWeighted<unsigned short, short, unsigned short>,
|
||||
arithm::addWeighted<unsigned short, short, short >,
|
||||
arithm::addWeighted<unsigned short, short, int >,
|
||||
arithm::addWeighted<unsigned short, short, float >,
|
||||
arithm::addWeighted<unsigned short, short, double>
|
||||
},
|
||||
{
|
||||
arithm::addWeighted<unsigned short, int, unsigned char >,
|
||||
arithm::addWeighted<unsigned short, int, signed char >,
|
||||
arithm::addWeighted<unsigned short, int, unsigned short>,
|
||||
arithm::addWeighted<unsigned short, int, short >,
|
||||
arithm::addWeighted<unsigned short, int, int >,
|
||||
arithm::addWeighted<unsigned short, int, float >,
|
||||
arithm::addWeighted<unsigned short, int, double>
|
||||
},
|
||||
{
|
||||
arithm::addWeighted<unsigned short, float, unsigned char >,
|
||||
arithm::addWeighted<unsigned short, float, signed char >,
|
||||
arithm::addWeighted<unsigned short, float, unsigned short>,
|
||||
arithm::addWeighted<unsigned short, float, short >,
|
||||
arithm::addWeighted<unsigned short, float, int >,
|
||||
arithm::addWeighted<unsigned short, float, float >,
|
||||
arithm::addWeighted<unsigned short, float, double>
|
||||
},
|
||||
{
|
||||
arithm::addWeighted<unsigned short, double, unsigned char >,
|
||||
arithm::addWeighted<unsigned short, double, signed char >,
|
||||
arithm::addWeighted<unsigned short, double, unsigned short>,
|
||||
arithm::addWeighted<unsigned short, double, short >,
|
||||
arithm::addWeighted<unsigned short, double, int >,
|
||||
arithm::addWeighted<unsigned short, double, float >,
|
||||
arithm::addWeighted<unsigned short, double, double>
|
||||
}
|
||||
},
|
||||
{
|
||||
{
|
||||
0/*arithm::addWeighted<short, unsigned char, unsigned char >*/,
|
||||
0/*arithm::addWeighted<short, unsigned char, signed char >*/,
|
||||
0/*arithm::addWeighted<short, unsigned char, unsigned short>*/,
|
||||
0/*arithm::addWeighted<short, unsigned char, short >*/,
|
||||
0/*arithm::addWeighted<short, unsigned char, int >*/,
|
||||
0/*arithm::addWeighted<short, unsigned char, float >*/,
|
||||
0/*arithm::addWeighted<short, unsigned char, double>*/
|
||||
},
|
||||
{
|
||||
0/*arithm::addWeighted<short, signed char, unsigned char >*/,
|
||||
0/*arithm::addWeighted<short, signed char, signed char >*/,
|
||||
0/*arithm::addWeighted<short, signed char, unsigned short>*/,
|
||||
0/*arithm::addWeighted<short, signed char, short >*/,
|
||||
0/*arithm::addWeighted<short, signed char, int >*/,
|
||||
0/*arithm::addWeighted<short, signed char, float >*/,
|
||||
0/*arithm::addWeighted<short, signed char, double>*/
|
||||
},
|
||||
{
|
||||
0/*arithm::addWeighted<short, unsigned short, unsigned char >*/,
|
||||
0/*arithm::addWeighted<short, unsigned short, signed char >*/,
|
||||
0/*arithm::addWeighted<short, unsigned short, unsigned short>*/,
|
||||
0/*arithm::addWeighted<short, unsigned short, short >*/,
|
||||
0/*arithm::addWeighted<short, unsigned short, int >*/,
|
||||
0/*arithm::addWeighted<short, unsigned short, float >*/,
|
||||
0/*arithm::addWeighted<short, unsigned short, double>*/
|
||||
},
|
||||
{
|
||||
arithm::addWeighted<short, short, unsigned char >,
|
||||
arithm::addWeighted<short, short, signed char >,
|
||||
arithm::addWeighted<short, short, unsigned short>,
|
||||
arithm::addWeighted<short, short, short >,
|
||||
arithm::addWeighted<short, short, int >,
|
||||
arithm::addWeighted<short, short, float >,
|
||||
arithm::addWeighted<short, short, double>
|
||||
},
|
||||
{
|
||||
arithm::addWeighted<short, int, unsigned char >,
|
||||
arithm::addWeighted<short, int, signed char >,
|
||||
arithm::addWeighted<short, int, unsigned short>,
|
||||
arithm::addWeighted<short, int, short >,
|
||||
arithm::addWeighted<short, int, int >,
|
||||
arithm::addWeighted<short, int, float >,
|
||||
arithm::addWeighted<short, int, double>
|
||||
},
|
||||
{
|
||||
arithm::addWeighted<short, float, unsigned char >,
|
||||
arithm::addWeighted<short, float, signed char >,
|
||||
arithm::addWeighted<short, float, unsigned short>,
|
||||
arithm::addWeighted<short, float, short >,
|
||||
arithm::addWeighted<short, float, int >,
|
||||
arithm::addWeighted<short, float, float >,
|
||||
arithm::addWeighted<short, float, double>
|
||||
},
|
||||
{
|
||||
arithm::addWeighted<short, double, unsigned char >,
|
||||
arithm::addWeighted<short, double, signed char >,
|
||||
arithm::addWeighted<short, double, unsigned short>,
|
||||
arithm::addWeighted<short, double, short >,
|
||||
arithm::addWeighted<short, double, int >,
|
||||
arithm::addWeighted<short, double, float >,
|
||||
arithm::addWeighted<short, double, double>
|
||||
}
|
||||
},
|
||||
{
|
||||
{
|
||||
0/*arithm::addWeighted<int, unsigned char, unsigned char >*/,
|
||||
0/*arithm::addWeighted<int, unsigned char, signed char >*/,
|
||||
0/*arithm::addWeighted<int, unsigned char, unsigned short>*/,
|
||||
0/*arithm::addWeighted<int, unsigned char, short >*/,
|
||||
0/*arithm::addWeighted<int, unsigned char, int >*/,
|
||||
0/*arithm::addWeighted<int, unsigned char, float >*/,
|
||||
0/*arithm::addWeighted<int, unsigned char, double>*/
|
||||
},
|
||||
{
|
||||
0/*arithm::addWeighted<int, signed char, unsigned char >*/,
|
||||
0/*arithm::addWeighted<int, signed char, signed char >*/,
|
||||
0/*arithm::addWeighted<int, signed char, unsigned short>*/,
|
||||
0/*arithm::addWeighted<int, signed char, short >*/,
|
||||
0/*arithm::addWeighted<int, signed char, int >*/,
|
||||
0/*arithm::addWeighted<int, signed char, float >*/,
|
||||
0/*arithm::addWeighted<int, signed char, double>*/
|
||||
},
|
||||
{
|
||||
0/*arithm::addWeighted<int, unsigned short, unsigned char >*/,
|
||||
0/*arithm::addWeighted<int, unsigned short, signed char >*/,
|
||||
0/*arithm::addWeighted<int, unsigned short, unsigned short>*/,
|
||||
0/*arithm::addWeighted<int, unsigned short, short >*/,
|
||||
0/*arithm::addWeighted<int, unsigned short, int >*/,
|
||||
0/*arithm::addWeighted<int, unsigned short, float >*/,
|
||||
0/*arithm::addWeighted<int, unsigned short, double>*/
|
||||
},
|
||||
{
|
||||
0/*arithm::addWeighted<int, short, unsigned char >*/,
|
||||
0/*arithm::addWeighted<int, short, signed char >*/,
|
||||
0/*arithm::addWeighted<int, short, unsigned short>*/,
|
||||
0/*arithm::addWeighted<int, short, short >*/,
|
||||
0/*arithm::addWeighted<int, short, int >*/,
|
||||
0/*arithm::addWeighted<int, short, float >*/,
|
||||
0/*arithm::addWeighted<int, short, double>*/
|
||||
},
|
||||
{
|
||||
arithm::addWeighted<int, int, unsigned char >,
|
||||
arithm::addWeighted<int, int, signed char >,
|
||||
arithm::addWeighted<int, int, unsigned short>,
|
||||
arithm::addWeighted<int, int, short >,
|
||||
arithm::addWeighted<int, int, int >,
|
||||
arithm::addWeighted<int, int, float >,
|
||||
arithm::addWeighted<int, int, double>
|
||||
},
|
||||
{
|
||||
arithm::addWeighted<int, float, unsigned char >,
|
||||
arithm::addWeighted<int, float, signed char >,
|
||||
arithm::addWeighted<int, float, unsigned short>,
|
||||
arithm::addWeighted<int, float, short >,
|
||||
arithm::addWeighted<int, float, int >,
|
||||
arithm::addWeighted<int, float, float >,
|
||||
arithm::addWeighted<int, float, double>
|
||||
},
|
||||
{
|
||||
arithm::addWeighted<int, double, unsigned char >,
|
||||
arithm::addWeighted<int, double, signed char >,
|
||||
arithm::addWeighted<int, double, unsigned short>,
|
||||
arithm::addWeighted<int, double, short >,
|
||||
arithm::addWeighted<int, double, int >,
|
||||
arithm::addWeighted<int, double, float >,
|
||||
arithm::addWeighted<int, double, double>
|
||||
}
|
||||
},
|
||||
{
|
||||
{
|
||||
0/*arithm::addWeighted<float, unsigned char, unsigned char >*/,
|
||||
0/*arithm::addWeighted<float, unsigned char, signed char >*/,
|
||||
0/*arithm::addWeighted<float, unsigned char, unsigned short>*/,
|
||||
0/*arithm::addWeighted<float, unsigned char, short >*/,
|
||||
0/*arithm::addWeighted<float, unsigned char, int >*/,
|
||||
0/*arithm::addWeighted<float, unsigned char, float >*/,
|
||||
0/*arithm::addWeighted<float, unsigned char, double>*/
|
||||
},
|
||||
{
|
||||
0/*arithm::addWeighted<float, signed char, unsigned char >*/,
|
||||
0/*arithm::addWeighted<float, signed char, signed char >*/,
|
||||
0/*arithm::addWeighted<float, signed char, unsigned short>*/,
|
||||
0/*arithm::addWeighted<float, signed char, short >*/,
|
||||
0/*arithm::addWeighted<float, signed char, int >*/,
|
||||
0/*arithm::addWeighted<float, signed char, float >*/,
|
||||
0/*arithm::addWeighted<float, signed char, double>*/
|
||||
},
|
||||
{
|
||||
0/*arithm::addWeighted<float, unsigned short, unsigned char >*/,
|
||||
0/*arithm::addWeighted<float, unsigned short, signed char >*/,
|
||||
0/*arithm::addWeighted<float, unsigned short, unsigned short>*/,
|
||||
0/*arithm::addWeighted<float, unsigned short, short >*/,
|
||||
0/*arithm::addWeighted<float, unsigned short, int >*/,
|
||||
0/*arithm::addWeighted<float, unsigned short, float >*/,
|
||||
0/*arithm::addWeighted<float, unsigned short, double>*/
|
||||
},
|
||||
{
|
||||
0/*arithm::addWeighted<float, short, unsigned char >*/,
|
||||
0/*arithm::addWeighted<float, short, signed char >*/,
|
||||
0/*arithm::addWeighted<float, short, unsigned short>*/,
|
||||
0/*arithm::addWeighted<float, short, short >*/,
|
||||
0/*arithm::addWeighted<float, short, int >*/,
|
||||
0/*arithm::addWeighted<float, short, float >*/,
|
||||
0/*arithm::addWeighted<float, short, double>*/
|
||||
},
|
||||
{
|
||||
0/*arithm::addWeighted<float, int, unsigned char >*/,
|
||||
0/*arithm::addWeighted<float, int, signed char >*/,
|
||||
0/*arithm::addWeighted<float, int, unsigned short>*/,
|
||||
0/*arithm::addWeighted<float, int, short >*/,
|
||||
0/*arithm::addWeighted<float, int, int >*/,
|
||||
0/*arithm::addWeighted<float, int, float >*/,
|
||||
0/*arithm::addWeighted<float, int, double>*/
|
||||
},
|
||||
{
|
||||
arithm::addWeighted<float, float, unsigned char >,
|
||||
arithm::addWeighted<float, float, signed char >,
|
||||
arithm::addWeighted<float, float, unsigned short>,
|
||||
arithm::addWeighted<float, float, short >,
|
||||
arithm::addWeighted<float, float, int >,
|
||||
arithm::addWeighted<float, float, float >,
|
||||
arithm::addWeighted<float, float, double>
|
||||
},
|
||||
{
|
||||
arithm::addWeighted<float, double, unsigned char >,
|
||||
arithm::addWeighted<float, double, signed char >,
|
||||
arithm::addWeighted<float, double, unsigned short>,
|
||||
arithm::addWeighted<float, double, short >,
|
||||
arithm::addWeighted<float, double, int >,
|
||||
arithm::addWeighted<float, double, float >,
|
||||
arithm::addWeighted<float, double, double>
|
||||
}
|
||||
},
|
||||
{
|
||||
{
|
||||
0/*arithm::addWeighted<double, unsigned char, unsigned char >*/,
|
||||
0/*arithm::addWeighted<double, unsigned char, signed char >*/,
|
||||
0/*arithm::addWeighted<double, unsigned char, unsigned short>*/,
|
||||
0/*arithm::addWeighted<double, unsigned char, short >*/,
|
||||
0/*arithm::addWeighted<double, unsigned char, int >*/,
|
||||
0/*arithm::addWeighted<double, unsigned char, float >*/,
|
||||
0/*arithm::addWeighted<double, unsigned char, double>*/
|
||||
},
|
||||
{
|
||||
0/*arithm::addWeighted<double, signed char, unsigned char >*/,
|
||||
0/*arithm::addWeighted<double, signed char, signed char >*/,
|
||||
0/*arithm::addWeighted<double, signed char, unsigned short>*/,
|
||||
0/*arithm::addWeighted<double, signed char, short >*/,
|
||||
0/*arithm::addWeighted<double, signed char, int >*/,
|
||||
0/*arithm::addWeighted<double, signed char, float >*/,
|
||||
0/*arithm::addWeighted<double, signed char, double>*/
|
||||
},
|
||||
{
|
||||
0/*arithm::addWeighted<double, unsigned short, unsigned char >*/,
|
||||
0/*arithm::addWeighted<double, unsigned short, signed char >*/,
|
||||
0/*arithm::addWeighted<double, unsigned short, unsigned short>*/,
|
||||
0/*arithm::addWeighted<double, unsigned short, short >*/,
|
||||
0/*arithm::addWeighted<double, unsigned short, int >*/,
|
||||
0/*arithm::addWeighted<double, unsigned short, float >*/,
|
||||
0/*arithm::addWeighted<double, unsigned short, double>*/
|
||||
},
|
||||
{
|
||||
0/*arithm::addWeighted<double, short, unsigned char >*/,
|
||||
0/*arithm::addWeighted<double, short, signed char >*/,
|
||||
0/*arithm::addWeighted<double, short, unsigned short>*/,
|
||||
0/*arithm::addWeighted<double, short, short >*/,
|
||||
0/*arithm::addWeighted<double, short, int >*/,
|
||||
0/*arithm::addWeighted<double, short, float >*/,
|
||||
0/*arithm::addWeighted<double, short, double>*/
|
||||
},
|
||||
{
|
||||
0/*arithm::addWeighted<double, int, unsigned char >*/,
|
||||
0/*arithm::addWeighted<double, int, signed char >*/,
|
||||
0/*arithm::addWeighted<double, int, unsigned short>*/,
|
||||
0/*arithm::addWeighted<double, int, short >*/,
|
||||
0/*arithm::addWeighted<double, int, int >*/,
|
||||
0/*arithm::addWeighted<double, int, float >*/,
|
||||
0/*arithm::addWeighted<double, int, double>*/
|
||||
},
|
||||
{
|
||||
0/*arithm::addWeighted<double, float, unsigned char >*/,
|
||||
0/*arithm::addWeighted<double, float, signed char >*/,
|
||||
0/*arithm::addWeighted<double, float, unsigned short>*/,
|
||||
0/*arithm::addWeighted<double, float, short >*/,
|
||||
0/*arithm::addWeighted<double, float, int >*/,
|
||||
0/*arithm::addWeighted<double, float, float >*/,
|
||||
0/*arithm::addWeighted<double, float, double>*/
|
||||
},
|
||||
{
|
||||
arithm::addWeighted<double, double, unsigned char >,
|
||||
arithm::addWeighted<double, double, signed char >,
|
||||
arithm::addWeighted<double, double, unsigned short>,
|
||||
arithm::addWeighted<double, double, short >,
|
||||
arithm::addWeighted<double, double, int >,
|
||||
arithm::addWeighted<double, double, float >,
|
||||
arithm::addWeighted<double, double, double>
|
||||
}
|
||||
}
|
||||
};
|
||||
|
||||
GpuMat src1 = _src1.getGpuMat();
|
||||
GpuMat src2 = _src2.getGpuMat();
|
||||
|
||||
int sdepth1 = src1.depth();
|
||||
int sdepth2 = src2.depth();
|
||||
ddepth = ddepth >= 0 ? CV_MAT_DEPTH(ddepth) : std::max(sdepth1, sdepth2);
|
||||
const int cn = src1.channels();
|
||||
|
||||
CV_Assert( src2.size() == src1.size() && src2.channels() == cn );
|
||||
CV_Assert( sdepth1 <= CV_64F && sdepth2 <= CV_64F && ddepth <= CV_64F );
|
||||
|
||||
if (sdepth1 == CV_64F || sdepth2 == CV_64F || ddepth == CV_64F)
|
||||
{
|
||||
if (!deviceSupports(NATIVE_DOUBLE))
|
||||
CV_Error(cv::Error::StsUnsupportedFormat, "The device doesn't support double");
|
||||
}
|
||||
|
||||
_dst.create(src1.size(), CV_MAKE_TYPE(ddepth, cn));
|
||||
GpuMat dst = _dst.getGpuMat();
|
||||
|
||||
PtrStepSzb src1_(src1.rows, src1.cols * cn, src1.data, src1.step);
|
||||
PtrStepSzb src2_(src1.rows, src1.cols * cn, src2.data, src2.step);
|
||||
PtrStepSzb dst_(src1.rows, src1.cols * cn, dst.data, dst.step);
|
||||
|
||||
if (sdepth1 > sdepth2)
|
||||
{
|
||||
std::swap(src1_.data, src2_.data);
|
||||
std::swap(src1_.step, src2_.step);
|
||||
std::swap(alpha, beta);
|
||||
std::swap(sdepth1, sdepth2);
|
||||
}
|
||||
|
||||
const func_t func = funcs[sdepth1][sdepth2][ddepth];
|
||||
|
||||
if (!func)
|
||||
CV_Error(cv::Error::StsUnsupportedFormat, "Unsupported combination of source and destination types");
|
||||
|
||||
func(src1_, alpha, src2_, beta, gamma, dst_, StreamAccessor::getStream(stream));
|
||||
}
|
||||
|
||||
////////////////////////////////////////////////////////////////////////
|
||||
// threshold
|
||||
|
||||
|
Reference in New Issue
Block a user