return buf;
}
+template <typename T>
+static std::string kerToStr(const Mat & k)
+{
+ int width = k.cols - 1, depth = k.depth();
+ const T * const data = reinterpret_cast<const T *>(k.data);
+
+ std::ostringstream stream;
+ stream.precision(10);
+
+ if (depth <= CV_8S)
+ {
+ for (int i = 0; i < width; ++i)
+ stream << (int)data[i] << ", ";
+ stream << (int)data[width];
+ }
+ else if (depth == CV_32F)
+ {
+ stream.setf(std::ios_base::showpoint);
+ for (int i = 0; i < width; ++i)
+ stream << data[i] << "f, ";
+ stream << data[width] << "f";
+ }
+ else
+ {
+ for (int i = 0; i < width; ++i)
+ stream << data[i] << ", ";
+ }
+
+ return stream.str();
+}
+
+String kernelToStr(InputArray _kernel, int ddepth)
+{
+ Mat kernel = _kernel.getMat().reshape(1, 1);
+
+ int depth = kernel.depth();
+ if (ddepth < 0)
+ ddepth = depth;
+
+ if (ddepth != depth)
+ kernel.convertTo(kernel, ddepth);
+
+ typedef std::string (*func_t)(const Mat &);
+ static const func_t funcs[] = { kerToStr<uchar>, kerToStr<char>, kerToStr<ushort>,kerToStr<short>,
+ kerToStr<int>, kerToStr<float>, kerToStr<double>, 0 };
+ const func_t func = funcs[depth];
+ CV_Assert(func != 0);
+
+ return cv::format(" -D COEFF=%s", func(kernel).c_str());
+}
+
///////////////////////////////////////////////////////////////////////////////////////////////
// deviceVersion has format
// OpenCL<space><major_version.minor_version><space><vendor-specific information>
return kernel.run(2, globalsize, localsize, true);
}
-template <typename T>
-static std::string kerToStr(const Mat & k)
-{
- int width = k.cols - 1, depth = k.depth();
- const T * const data = reinterpret_cast<const T *>(k.data);
-
- std::ostringstream stream;
- stream.precision(10);
-
- if (depth <= CV_8S)
- {
- for (int i = 0; i < width; ++i)
- stream << (int)data[i] << ",";
- stream << (int)data[width];
- }
- else if (depth == CV_32F)
- {
- stream.setf(std::ios_base::showpoint);
- for (int i = 0; i < width; ++i)
- stream << data[i] << "f,";
- stream << data[width] << "f";
- }
- else
- {
- for (int i = 0; i < width; ++i)
- stream << data[i] << ",";
- }
-
- return stream.str();
-}
-
-static String kernelToStr(InputArray _kernel, int ddepth = -1)
-{
- Mat kernel = _kernel.getMat().reshape(1, 1);
-
- int depth = kernel.depth();
- if (ddepth < 0)
- ddepth = depth;
-
- if (ddepth != depth)
- kernel.convertTo(kernel, ddepth);
-
- typedef std::string (*func_t)(const Mat &);
- static const func_t funcs[] = { kerToStr<uchar>, kerToStr<char>, kerToStr<ushort>,kerToStr<short>,
- kerToStr<int>, kerToStr<float>, kerToStr<double>, 0 };
- const func_t func = funcs[depth];
- CV_Assert(func != 0);
-
- return cv::format(" -D COEFF=%s", func(kernel).c_str());
-}
-
static bool ocl_sepRowFilter2D( UMat &src, UMat &buf, Mat &kernelX, int anchor, int borderType, bool sync)
{
int type = src.type();
btype,
extra_extrapolation ? "EXTRA_EXTRAPOLATION" : "NO_EXTRA_EXTRAPOLATION",
isIsolatedBorder ? "BORDER_ISOLATED" : "NO_BORDER_ISOLATED");
- build_options += kernelToStr(kernelX, CV_32F);
+ build_options += ocl::kernelToStr(kernelX, CV_32F);
Size srcWholeSize; Point srcOffset;
src.locateROI(srcWholeSize, srcOffset);
idxArg = kernelRow.set(idxArg, buf.cols);
idxArg = kernelRow.set(idxArg, buf.rows);
idxArg = kernelRow.set(idxArg, radiusY);
-// idxArg = kernelRow.set(idxArg, ocl::KernelArg::PtrReadOnly(kernelX.getUMat(ACCESS_READ)));
return kernelRow.run(2, globalsize, localsize, sync);
}
}
}
- build_options += kernelToStr(kernelY, CV_32F);
+ build_options += ocl::kernelToStr(kernelY, CV_32F);
ocl::Kernel kernelCol;
if (!kernelCol.create("col_filter", cv::ocl::imgproc::filterSepCol_oclsrc, build_options))
idxArg = kernelCol.set(idxArg, (int)(dst.step / dst.elemSize()));
idxArg = kernelCol.set(idxArg, dst.cols);
idxArg = kernelCol.set(idxArg, dst.rows);
-// idxArg = kernelCol.set(idxArg, ocl::KernelArg::PtrReadOnly(kernelY.getUMat(ACCESS_READ)));
return kernelCol.run(2, globalsize, localsize, sync);
}