#if defined (HAVE_IPP) && (IPP_VERSION_MAJOR >= 7)
static IppStatus sts = ippInit();
-#endif
+#endif
namespace cv
{
{
if( channels == 1 )
{
- switch( depth )
- {
- case CV_8U:
+ switch( depth )
+ {
+ case CV_8U:
return ippiSet_8u_C1R((Ipp8u)value[0], (Ipp8u *)dataPointer, step, size) >= 0;
case CV_16U:
return ippiSet_16u_C1R((Ipp16u)value[0], (Ipp16u *)dataPointer, step, size) >= 0;
case CV_32F:
return ippiSet_32f_C1R((Ipp32f)value[0], (Ipp32f *)dataPointer, step, size) >= 0;
- }
+ }
}
else
{
return IPPSetSimple<3, Ipp16u>(value, dataPointer, step, size, (ippiSetFunc)ippiSet_16u_C3R);
case CV_32F:
return IPPSetSimple<3, Ipp32f>(value, dataPointer, step, size, (ippiSetFunc)ippiSet_32f_C3R);
- }
+ }
}
else if( channels == 4 )
{
return IPPSetSimple<4, Ipp16u>(value, dataPointer, step, size, (ippiSetFunc)ippiSet_16u_C4R);
case CV_32F:
return IPPSetSimple<4, Ipp32f>(value, dataPointer, step, size, (ippiSetFunc)ippiSet_32f_C4R);
- }
+ }
}
}
return false;
int depth = src.depth(), cn = src.channels();
double scale_x = 1./inv_scale_x, scale_y = 1./inv_scale_y;
int k, sx, sy, dx, dy;
-
+
#if defined (HAVE_IPP) && (IPP_VERSION_MAJOR >= 7)
- int mode =
- interpolation == INTER_LINEAR ? IPPI_INTER_LINEAR :
- interpolation == INTER_NEAREST ? IPPI_INTER_NN :
- interpolation == INTER_CUBIC ? IPPI_INTER_CUBIC :
- interpolation == INTER_AREA && inv_scale_x * inv_scale_y > 1 ? IPPI_INTER_NN :
- 0;
+ int mode = interpolation == INTER_LINEAR ? IPPI_INTER_LINEAR : 0;
int type = src.type();
- ippiResizeSqrPixelFunc ippFunc =
- type == CV_8UC1 ? (ippiResizeSqrPixelFunc)ippiResizeSqrPixel_8u_C1R :
+ ippiResizeSqrPixelFunc ippFunc =
+ type == CV_8UC1 ? (ippiResizeSqrPixelFunc)ippiResizeSqrPixel_8u_C1R :
type == CV_8UC3 ? (ippiResizeSqrPixelFunc)ippiResizeSqrPixel_8u_C3R :
type == CV_8UC4 ? (ippiResizeSqrPixelFunc)ippiResizeSqrPixel_8u_C4R :
type == CV_16UC1 ? (ippiResizeSqrPixelFunc)ippiResizeSqrPixel_16u_C1R :
type == CV_16SC4 ? (ippiResizeSqrPixelFunc)ippiResizeSqrPixel_16s_C4R :
type == CV_32FC1 ? (ippiResizeSqrPixelFunc)ippiResizeSqrPixel_32f_C1R :
type == CV_32FC3 ? (ippiResizeSqrPixelFunc)ippiResizeSqrPixel_32f_C3R :
- type == CV_32FC4 ? (ippiResizeSqrPixelFunc)ippiResizeSqrPixel_32f_C4R :
+ type == CV_32FC4 ? (ippiResizeSqrPixelFunc)ippiResizeSqrPixel_32f_C4R :
0;
- if( ippFunc && mode )
+ if( ippFunc && mode != 0 )
{
bool ok;
Range range(0, src.rows);
#if defined (HAVE_IPP) && (IPP_VERSION_MAJOR >= 7)
int depth = src.depth();
int channels = src.channels();
- if( ( depth == CV_8U || depth == CV_16U || depth == CV_32F ) &&
- ( channels == 1 || channels == 3 || channels == 4 ) &&
+ if( ( depth == CV_8U || depth == CV_16U || depth == CV_32F ) &&
+ ( channels == 1 || channels == 3 || channels == 4 ) &&
( borderType == cv::BORDER_TRANSPARENT || ( borderType == cv::BORDER_CONSTANT ) ) )
{
int type = src.type();
- ippiWarpAffineBackFunc ippFunc =
+ ippiWarpAffineBackFunc ippFunc =
type == CV_8UC1 ? (ippiWarpAffineBackFunc)ippiWarpAffineBack_8u_C1R :
type == CV_8UC3 ? (ippiWarpAffineBackFunc)ippiWarpAffineBack_8u_C3R :
type == CV_8UC4 ? (ippiWarpAffineBackFunc)ippiWarpAffineBack_8u_C4R :
type == CV_32FC3 ? (ippiWarpAffineBackFunc)ippiWarpAffineBack_32f_C3R :
type == CV_32FC4 ? (ippiWarpAffineBackFunc)ippiWarpAffineBack_32f_C4R :
0;
- int mode =
+ int mode =
flags == INTER_LINEAR ? IPPI_INTER_LINEAR :
flags == INTER_NEAREST ? IPPI_INTER_NN :
- flags == INTER_CUBIC ? IPPI_INTER_CUBIC :
+ flags == INTER_CUBIC ? IPPI_INTER_CUBIC :
0;
if( mode && ippFunc )
{
}
}
#endif
-
+
for( x = 0; x < dst.cols; x++ )
{
adelta[x] = saturate_cast<int>(M[0]*x*AB_SCALE);
public ParallelLoopBody
{
public:
- IPPwarpPerspectiveInvoker(Mat &_src, Mat &_dst, double (&_coeffs)[3][3], int &_interpolation, int &_borderType, const Scalar &_borderValue, ippiWarpPerspectiveBackFunc _func, bool *_ok) :
+ IPPwarpPerspectiveInvoker(Mat &_src, Mat &_dst, double (&_coeffs)[3][3], int &_interpolation, int &_borderType, const Scalar &_borderValue, ippiWarpPerspectiveBackFunc _func, bool *_ok) :
ParallelLoopBody(), src(_src), dst(_dst), mode(_interpolation), coeffs(_coeffs), borderType(_borderType), borderValue(_borderValue), func(_func), ok(_ok)
{
*ok = true;
if( !(flags & WARP_INVERSE_MAP) )
invert(matM, matM);
-
+
#if defined (HAVE_IPP) && (IPP_VERSION_MAJOR >= 7)
int depth = src.depth();
int channels = src.channels();
- if( ( depth == CV_8U || depth == CV_16U || depth == CV_32F ) &&
- ( channels == 1 || channels == 3 || channels == 4 ) &&
+ if( ( depth == CV_8U || depth == CV_16U || depth == CV_32F ) &&
+ ( channels == 1 || channels == 3 || channels == 4 ) &&
( borderType == cv::BORDER_TRANSPARENT || borderType == cv::BORDER_CONSTANT ) )
{
int type = src.type();
- ippiWarpPerspectiveBackFunc ippFunc =
+ ippiWarpPerspectiveBackFunc ippFunc =
type == CV_8UC1 ? (ippiWarpPerspectiveBackFunc)ippiWarpPerspectiveBack_8u_C1R :
type == CV_8UC3 ? (ippiWarpPerspectiveBackFunc)ippiWarpPerspectiveBack_8u_C3R :
type == CV_8UC4 ? (ippiWarpPerspectiveBackFunc)ippiWarpPerspectiveBack_8u_C4R :
type == CV_32FC3 ? (ippiWarpPerspectiveBackFunc)ippiWarpPerspectiveBack_32f_C3R :
type == CV_32FC4 ? (ippiWarpPerspectiveBackFunc)ippiWarpPerspectiveBack_32f_C4R :
0;
- int mode =
+ int mode =
flags == INTER_LINEAR ? IPPI_INTER_LINEAR :
flags == INTER_NEAREST ? IPPI_INTER_NN :
- flags == INTER_CUBIC ? IPPI_INTER_CUBIC :
+ flags == INTER_CUBIC ? IPPI_INTER_CUBIC :
0;
if( mode && ippFunc )
{
}
static bool IPPMorphOp(int op, InputArray _src, OutputArray _dst,
- InputArray _kernel,
- const Point &anchor, int iterations,
+ const Mat& _kernel, Point anchor, int iterations,
int borderType, const Scalar &borderValue)
{
- Mat src = _src.getMat(), kernel = _kernel.getMat();
+ Mat src = _src.getMat(), kernel = _kernel;
if( !( src.depth() == CV_8U || src.depth() == CV_32F ) || ( iterations > 1 ) ||
!( borderType == cv::BORDER_REPLICATE || (borderType == cv::BORDER_CONSTANT && borderValue == morphologyDefaultBorderValue()) )
|| !( op == MORPH_DILATE || op == MORPH_ERODE) )
}
Size ksize = kernel.data ? kernel.size() : Size(3,3);
- Point normanchor = normalizeAnchor(anchor, ksize);
-
- CV_Assert( normanchor.inside(Rect(0, 0, ksize.width, ksize.height)) );
_dst.create( src.size(), src.type() );
Mat dst = _dst.getMat();
if( !kernel.data )
{
ksize = Size(1+iterations*2,1+iterations*2);
- normanchor = Point(iterations, iterations);
+ anchor = Point(iterations, iterations);
rectKernel = true;
iterations = 1;
}
{
ksize = Size(ksize.width + (iterations-1)*(ksize.width-1),
ksize.height + (iterations-1)*(ksize.height-1)),
- normanchor = Point(normanchor.x*iterations, normanchor.y*iterations);
+ anchor = Point(anchor.x*iterations, anchor.y*iterations);
kernel = Mat();
rectKernel = true;
iterations = 1;
if( iterations > 1 )
return false;
- return IPPMorphReplicate( op, src, dst, kernel, ksize, normanchor, rectKernel );
+ return IPPMorphReplicate( op, src, dst, kernel, ksize, anchor, rectKernel );
}
#endif
Point anchor, int iterations,
int borderType, const Scalar& borderValue )
{
+ Mat kernel = _kernel.getMat();
+ Size ksize = kernel.data ? kernel.size() : Size(3,3);
+ anchor = normalizeAnchor(anchor, ksize);
+
+ CV_Assert( anchor.inside(Rect(0, 0, ksize.width, ksize.height)) );
#if defined (HAVE_IPP) && (IPP_VERSION_MAJOR >= 7)
- if( IPPMorphOp(op, _src, _dst, _kernel, anchor, iterations, borderType, borderValue) )
+ if( IPPMorphOp(op, _src, _dst, kernel, anchor, iterations, borderType, borderValue) )
return;
#endif
- Mat src = _src.getMat(), kernel = _kernel.getMat();
- Size ksize = kernel.data ? kernel.size() : Size(3,3);
- anchor = normalizeAnchor(anchor, ksize);
-
- CV_Assert( anchor.inside(Rect(0, 0, ksize.width, ksize.height)) );
+ Mat src = _src.getMat();
_dst.create( src.size(), src.type() );
Mat dst = _dst.getMat();