mirror of
https://github.com/opencv/opencv.git
synced 2025-01-18 22:44:02 +08:00
workaround for ocl::absSum (eliminated error: unreachable executed)
This commit is contained in:
parent
cdf4e4e0b5
commit
c0456df611
@ -394,12 +394,16 @@ Scalar cv::ocl::sum(const oclMat &src)
|
|||||||
|
|
||||||
Scalar cv::ocl::absSum(const oclMat &src)
|
Scalar cv::ocl::absSum(const oclMat &src)
|
||||||
{
|
{
|
||||||
if (!src.clCxt->supportsFeature(FEATURE_CL_DOUBLE) && src.depth() == CV_64F)
|
int sdepth = src.depth();
|
||||||
|
if (!src.clCxt->supportsFeature(FEATURE_CL_DOUBLE) && sdepth == CV_64F)
|
||||||
{
|
{
|
||||||
CV_Error(CV_OpenCLDoubleNotSupported, "Selected device doesn't support double");
|
CV_Error(CV_OpenCLDoubleNotSupported, "Selected device doesn't support double");
|
||||||
return cv::Scalar::all(0);
|
return cv::Scalar::all(0);
|
||||||
}
|
}
|
||||||
|
|
||||||
|
if (sdepth == CV_8U || sdepth == CV_16U)
|
||||||
|
return sum(src);
|
||||||
|
|
||||||
static sumFunc functab[3] =
|
static sumFunc functab[3] =
|
||||||
{
|
{
|
||||||
arithmetic_sum<int>,
|
arithmetic_sum<int>,
|
||||||
@ -407,7 +411,7 @@ Scalar cv::ocl::absSum(const oclMat &src)
|
|||||||
arithmetic_sum<double>
|
arithmetic_sum<double>
|
||||||
};
|
};
|
||||||
|
|
||||||
int ddepth = std::max(src.depth(), CV_32S);
|
int ddepth = std::max(sdepth, CV_32S);
|
||||||
sumFunc func = functab[ddepth - CV_32S];
|
sumFunc func = functab[ddepth - CV_32S];
|
||||||
return func(src, ABS_SUM, ddepth);
|
return func(src, ABS_SUM, ddepth);
|
||||||
}
|
}
|
||||||
|
Loading…
Reference in New Issue
Block a user