mirror of
https://github.com/opencv/opencv.git
synced 2024-11-26 12:10:49 +08:00
Merge pull request #2556 from DeanF:master
This commit is contained in:
commit
9a3895d842
@ -88,8 +88,10 @@ void UMatData::unlock()
|
|||||||
|
|
||||||
MatAllocator* UMat::getStdAllocator()
|
MatAllocator* UMat::getStdAllocator()
|
||||||
{
|
{
|
||||||
|
#ifdef HAVE_OPENCL
|
||||||
if( ocl::haveOpenCL() && ocl::useOpenCL() )
|
if( ocl::haveOpenCL() && ocl::useOpenCL() )
|
||||||
return ocl::getOpenCLAllocator();
|
return ocl::getOpenCLAllocator();
|
||||||
|
#endif
|
||||||
return Mat::getStdAllocator();
|
return Mat::getStdAllocator();
|
||||||
}
|
}
|
||||||
|
|
||||||
@ -665,7 +667,7 @@ void UMat::copyTo(OutputArray _dst, InputArray _mask) const
|
|||||||
copyTo(_dst);
|
copyTo(_dst);
|
||||||
return;
|
return;
|
||||||
}
|
}
|
||||||
|
#ifdef HAVE_OPENCL
|
||||||
int cn = channels(), mtype = _mask.type(), mdepth = CV_MAT_DEPTH(mtype), mcn = CV_MAT_CN(mtype);
|
int cn = channels(), mtype = _mask.type(), mdepth = CV_MAT_DEPTH(mtype), mcn = CV_MAT_CN(mtype);
|
||||||
CV_Assert( mdepth == CV_8U && (mcn == 1 || mcn == cn) );
|
CV_Assert( mdepth == CV_8U && (mcn == 1 || mcn == cn) );
|
||||||
|
|
||||||
@ -692,7 +694,7 @@ void UMat::copyTo(OutputArray _dst, InputArray _mask) const
|
|||||||
return;
|
return;
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
#endif
|
||||||
Mat src = getMat(ACCESS_READ);
|
Mat src = getMat(ACCESS_READ);
|
||||||
src.copyTo(_dst, _mask);
|
src.copyTo(_dst, _mask);
|
||||||
}
|
}
|
||||||
@ -713,7 +715,7 @@ void UMat::convertTo(OutputArray _dst, int _type, double alpha, double beta) con
|
|||||||
copyTo(_dst);
|
copyTo(_dst);
|
||||||
return;
|
return;
|
||||||
}
|
}
|
||||||
|
#ifdef HAVE_OPENCL
|
||||||
bool doubleSupport = ocl::Device::getDefault().doubleFPConfig() > 0;
|
bool doubleSupport = ocl::Device::getDefault().doubleFPConfig() > 0;
|
||||||
bool needDouble = sdepth == CV_64F || ddepth == CV_64F;
|
bool needDouble = sdepth == CV_64F || ddepth == CV_64F;
|
||||||
if( dims <= 2 && cn && _dst.isUMat() && ocl::useOpenCL() &&
|
if( dims <= 2 && cn && _dst.isUMat() && ocl::useOpenCL() &&
|
||||||
@ -748,7 +750,7 @@ void UMat::convertTo(OutputArray _dst, int _type, double alpha, double beta) con
|
|||||||
return;
|
return;
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
#endif
|
||||||
Mat m = getMat(ACCESS_READ);
|
Mat m = getMat(ACCESS_READ);
|
||||||
m.convertTo(_dst, _type, alpha, beta);
|
m.convertTo(_dst, _type, alpha, beta);
|
||||||
}
|
}
|
||||||
@ -756,7 +758,9 @@ void UMat::convertTo(OutputArray _dst, int _type, double alpha, double beta) con
|
|||||||
UMat& UMat::setTo(InputArray _value, InputArray _mask)
|
UMat& UMat::setTo(InputArray _value, InputArray _mask)
|
||||||
{
|
{
|
||||||
bool haveMask = !_mask.empty();
|
bool haveMask = !_mask.empty();
|
||||||
|
#ifdef HAVE_OPENCL
|
||||||
int tp = type(), cn = CV_MAT_CN(tp);
|
int tp = type(), cn = CV_MAT_CN(tp);
|
||||||
|
|
||||||
if( dims <= 2 && cn <= 4 && CV_MAT_DEPTH(tp) < CV_64F && ocl::useOpenCL() )
|
if( dims <= 2 && cn <= 4 && CV_MAT_DEPTH(tp) < CV_64F && ocl::useOpenCL() )
|
||||||
{
|
{
|
||||||
Mat value = _value.getMat();
|
Mat value = _value.getMat();
|
||||||
@ -795,6 +799,7 @@ UMat& UMat::setTo(InputArray _value, InputArray _mask)
|
|||||||
return *this;
|
return *this;
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
#endif
|
||||||
Mat m = getMat(haveMask ? ACCESS_RW : ACCESS_WRITE);
|
Mat m = getMat(haveMask ? ACCESS_RW : ACCESS_WRITE);
|
||||||
m.setTo(_value, _mask);
|
m.setTo(_value, _mask);
|
||||||
return *this;
|
return *this;
|
||||||
|
Loading…
Reference in New Issue
Block a user