From: Alexander Karsakov Date: Mon, 11 Aug 2014 11:37:05 +0000 (+0400) Subject: Enabled IPPMorphReplicate in case BORDER_CONSTANT only for 3x3 kernels. X-Git-Tag: accepted/tizen/6.0/unified/20201030.111113~3037^2~2 X-Git-Url: http://review.tizen.org/git/?a=commitdiff_plain;h=6b0e63b652db2a60b6858df86cd8cc898a01c214;p=platform%2Fupstream%2Fopencv.git Enabled IPPMorphReplicate in case BORDER_CONSTANT only for 3x3 kernels. --- diff --git a/modules/imgproc/src/morph.cpp b/modules/imgproc/src/morph.cpp index 8985a7f..ceccff4 100644 --- a/modules/imgproc/src/morph.cpp +++ b/modules/imgproc/src/morph.cpp @@ -1268,10 +1268,11 @@ static bool IPPMorphOp(int op, InputArray _src, OutputArray _dst, int type = src.type(), depth = CV_MAT_DEPTH(type), cn = CV_MAT_CN(type); if( !( depth == CV_8U || depth == CV_32F ) || !(cn == 1 || cn == 3 || cn == 4) || - !( borderType == cv::BORDER_REPLICATE || (borderType == cv::BORDER_CONSTANT && borderValue == morphologyDefaultBorderValue()) ) - || !( op == MORPH_DILATE || op == MORPH_ERODE) || _src.isSubmatrix() ) + !( borderType == cv::BORDER_REPLICATE || (borderType == cv::BORDER_CONSTANT && borderValue == morphologyDefaultBorderValue() && + kernel.size() == Size(3,3)) ) || !( op == MORPH_DILATE || op == MORPH_ERODE) || _src.isSubmatrix() ) return false; + // In case BORDER_CONSTANT, IPPMorphReplicate works correct with kernels of size 3*3 only if( borderType == cv::BORDER_CONSTANT && kernel.data ) { int x, y;