|
|
|
@ -3219,16 +3219,16 @@ static bool ocl_filter2D( InputArray _src, OutputArray _dst, int ddepth, |
|
|
|
|
((ksize.width < 5 && ksize.height < 5) || |
|
|
|
|
(ksize.width == 5 && ksize.height == 5 && cn == 1))) |
|
|
|
|
{ |
|
|
|
|
kernelMat.reshape(0, 1); |
|
|
|
|
kernelMat = kernelMat.reshape(0, 1); |
|
|
|
|
String kerStr = ocl::kernelToStr(kernelMat, CV_32F); |
|
|
|
|
int h = isolated ? sz.height : wholeSize.height; |
|
|
|
|
int w = isolated ? sz.width : wholeSize.width; |
|
|
|
|
|
|
|
|
|
if ((w < ksize.width) || (h < ksize.height)) |
|
|
|
|
if (w < ksize.width || h < ksize.height) |
|
|
|
|
return false; |
|
|
|
|
|
|
|
|
|
// Figure out what vector size to use for loading the pixels.
|
|
|
|
|
int pxLoadNumPixels = ((cn != 1) || sz.width % 4) ? 1 : 4; |
|
|
|
|
int pxLoadNumPixels = cn != 1 || sz.width % 4 ? 1 : 4; |
|
|
|
|
int pxLoadVecSize = cn * pxLoadNumPixels; |
|
|
|
|
|
|
|
|
|
// Figure out how many pixels per work item to compute in X and Y
|
|
|
|
@ -3273,8 +3273,8 @@ static bool ocl_filter2D( InputArray _src, OutputArray _dst, int ddepth, |
|
|
|
|
ocl::typeToStr(ddepth), ocl::typeToStr(wtype), ocl::typeToStr(wdepth), |
|
|
|
|
ocl::convertTypeStr(sdepth, wdepth, cn, cvt[0]), |
|
|
|
|
ocl::convertTypeStr(wdepth, ddepth, cn, cvt[1]), kerStr.c_str()); |
|
|
|
|
cv::String errmsg; |
|
|
|
|
if (!k.create("filter2DSmall", cv::ocl::imgproc::filter2DSmall_oclsrc, build_options, &errmsg)) |
|
|
|
|
|
|
|
|
|
if (!k.create("filter2DSmall", cv::ocl::imgproc::filter2DSmall_oclsrc, build_options)) |
|
|
|
|
return false; |
|
|
|
|
} |
|
|
|
|
else |
|
|
|
|