MCPcopy Create free account
hub / github.com/creatale/node-dv / filter2D

Method filter2D

deps/opencv/modules/imgproc/src/filter.cpp:3289–3332  ·  view source on GitHub ↗

Source from the content-addressed store, hash-verified

3287
3288
3289void cv::filter2D( InputArray _src, OutputArray _dst, int ddepth,
3290 InputArray _kernel, Point anchor,
3291 double delta, int borderType )
3292{
3293 Mat src = _src.getMat(), kernel = _kernel.getMat();
3294
3295 if( ddepth < 0 )
3296 ddepth = src.depth();
3297
3298#if CV_SSE2
3299 int dft_filter_size = ((src.depth() == CV_8U && (ddepth == CV_8U || ddepth == CV_16S)) ||
3300 (src.depth() == CV_32F && ddepth == CV_32F)) && checkHardwareSupport(CV_CPU_SSE3)? 130 : 50;
3301#else
3302 int dft_filter_size = 50;
3303#endif
3304
3305 _dst.create( src.size(), CV_MAKETYPE(ddepth, src.channels()) );
3306 Mat dst = _dst.getMat();
3307 anchor = normalizeAnchor(anchor, kernel.size());
3308
3309#ifdef HAVE_TEGRA_OPTIMIZATION
3310 if( tegra::filter2D(src, dst, kernel, anchor, delta, borderType) )
3311 return;
3312#endif
3313
3314 if( kernel.cols*kernel.rows >= dft_filter_size )
3315 {
3316 Mat temp;
3317 if( src.data != dst.data )
3318 temp = dst;
3319 else
3320 temp.create(dst.size(), dst.type());
3321 crossCorr( src, kernel, temp, src.size(),
3322 CV_MAKETYPE(ddepth, src.channels()),
3323 anchor, delta, borderType );
3324 if( temp.data != dst.data )
3325 temp.copyTo(dst);
3326 return;
3327 }
3328
3329 Ptr<FilterEngine> f = createLinearFilter(src.type(), dst.type(), kernel,
3330 anchor, delta, borderType & ~BORDER_ISOLATED );
3331 f->apply(src, dst, Rect(0,0,-1,-1), Point(), (borderType & BORDER_ISOLATED) != 0 );
3332}
3333
3334
3335void cv::sepFilter2D( InputArray _src, OutputArray _dst, int ddepth,

Callers

nothing calls this directly

Calls 12

checkHardwareSupportFunction · 0.85
normalizeAnchorFunction · 0.85
crossCorrFunction · 0.85
PointClass · 0.50
getMatMethod · 0.45
depthMethod · 0.45
createMethod · 0.45
sizeMethod · 0.45
channelsMethod · 0.45
typeMethod · 0.45
copyToMethod · 0.45
applyMethod · 0.45

Tested by

no test coverage detected