switched to Input/Output Array in gpu::addWeighted
This commit is contained in:
parent
ec70282bf7
commit
44ec450b53
@ -122,11 +122,11 @@ CV_EXPORTS void min(InputArray src1, InputArray src2, OutputArray dst, Stream& s
|
|||||||
CV_EXPORTS void max(InputArray src1, InputArray src2, OutputArray dst, Stream& stream = Stream::Null());
|
CV_EXPORTS void max(InputArray src1, InputArray src2, OutputArray dst, Stream& stream = Stream::Null());
|
||||||
|
|
||||||
//! computes the weighted sum of two arrays (dst = alpha*src1 + beta*src2 + gamma)
|
//! computes the weighted sum of two arrays (dst = alpha*src1 + beta*src2 + gamma)
|
||||||
CV_EXPORTS void addWeighted(const GpuMat& src1, double alpha, const GpuMat& src2, double beta, double gamma, GpuMat& dst,
|
CV_EXPORTS void addWeighted(InputArray src1, double alpha, InputArray src2, double beta, double gamma, OutputArray dst,
|
||||||
int dtype = -1, Stream& stream = Stream::Null());
|
int dtype = -1, Stream& stream = Stream::Null());
|
||||||
|
|
||||||
//! adds scaled array to another one (dst = alpha*src1 + src2)
|
//! adds scaled array to another one (dst = alpha*src1 + src2)
|
||||||
static inline void scaleAdd(const GpuMat& src1, double alpha, const GpuMat& src2, GpuMat& dst, Stream& stream = Stream::Null())
|
static inline void scaleAdd(InputArray src1, double alpha, InputArray src2, OutputArray dst, Stream& stream = Stream::Null())
|
||||||
{
|
{
|
||||||
addWeighted(src1, alpha, src2, 1.0, 0.0, dst, -1, stream);
|
addWeighted(src1, alpha, src2, 1.0, 0.0, dst, -1, stream);
|
||||||
}
|
}
|
||||||
|
@ -73,7 +73,7 @@ void cv::gpu::lshift(InputArray, Scalar_<int>, OutputArray, Stream&) { throw_no_
|
|||||||
void cv::gpu::min(InputArray, InputArray, OutputArray, Stream&) { throw_no_cuda(); }
|
void cv::gpu::min(InputArray, InputArray, OutputArray, Stream&) { throw_no_cuda(); }
|
||||||
void cv::gpu::max(InputArray, InputArray, OutputArray, Stream&) { throw_no_cuda(); }
|
void cv::gpu::max(InputArray, InputArray, OutputArray, Stream&) { throw_no_cuda(); }
|
||||||
|
|
||||||
void cv::gpu::addWeighted(const GpuMat&, double, const GpuMat&, double, double, GpuMat&, int, Stream&) { throw_no_cuda(); }
|
void cv::gpu::addWeighted(InputArray, double, InputArray, double, double, OutputArray, int, Stream&) { throw_no_cuda(); }
|
||||||
|
|
||||||
double cv::gpu::threshold(const GpuMat&, GpuMat&, double, double, int, Stream&) {throw_no_cuda(); return 0.0;}
|
double cv::gpu::threshold(const GpuMat&, GpuMat&, double, double, int, Stream&) {throw_no_cuda(); return 0.0;}
|
||||||
|
|
||||||
@ -2427,7 +2427,7 @@ namespace arithm
|
|||||||
void addWeighted(PtrStepSzb src1, double alpha, PtrStepSzb src2, double beta, double gamma, PtrStepSzb dst, cudaStream_t stream);
|
void addWeighted(PtrStepSzb src1, double alpha, PtrStepSzb src2, double beta, double gamma, PtrStepSzb dst, cudaStream_t stream);
|
||||||
}
|
}
|
||||||
|
|
||||||
void cv::gpu::addWeighted(const GpuMat& src1, double alpha, const GpuMat& src2, double beta, double gamma, GpuMat& dst, int ddepth, Stream& stream)
|
void cv::gpu::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);
|
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] =
|
static const func_t funcs[7][7][7] =
|
||||||
@ -2889,6 +2889,9 @@ void cv::gpu::addWeighted(const GpuMat& src1, double alpha, const GpuMat& src2,
|
|||||||
}
|
}
|
||||||
};
|
};
|
||||||
|
|
||||||
|
GpuMat src1 = _src1.getGpuMat();
|
||||||
|
GpuMat src2 = _src2.getGpuMat();
|
||||||
|
|
||||||
int sdepth1 = src1.depth();
|
int sdepth1 = src1.depth();
|
||||||
int sdepth2 = src2.depth();
|
int sdepth2 = src2.depth();
|
||||||
ddepth = ddepth >= 0 ? CV_MAT_DEPTH(ddepth) : std::max(sdepth1, sdepth2);
|
ddepth = ddepth >= 0 ? CV_MAT_DEPTH(ddepth) : std::max(sdepth1, sdepth2);
|
||||||
@ -2903,7 +2906,8 @@ void cv::gpu::addWeighted(const GpuMat& src1, double alpha, const GpuMat& src2,
|
|||||||
CV_Error(cv::Error::StsUnsupportedFormat, "The device doesn't support double");
|
CV_Error(cv::Error::StsUnsupportedFormat, "The device doesn't support double");
|
||||||
}
|
}
|
||||||
|
|
||||||
dst.create(src1.size(), CV_MAKE_TYPE(ddepth, cn));
|
_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 src1_(src1.rows, src1.cols * cn, src1.data, src1.step);
|
||||||
PtrStepSzb src2_(src1.rows, src1.cols * cn, src2.data, src2.step);
|
PtrStepSzb src2_(src1.rows, src1.cols * cn, src2.data, src2.step);
|
||||||
|
Loading…
x
Reference in New Issue
Block a user