|
|
|
@ -2967,6 +2967,30 @@ void cv::transpose( InputArray _src, OutputArray _dst ) |
|
|
|
|
return; |
|
|
|
|
} |
|
|
|
|
|
|
|
|
|
#ifdef HAVE_IPP |
|
|
|
|
typedef IppStatus (CV_STDCALL * ippiTranspose)(const void * pSrc, int srcStep, void * pDst, int dstStep, IppiSize roiSize); |
|
|
|
|
ippiTranspose ippFunc = |
|
|
|
|
type == CV_8UC1 ? (ippiTranspose)ippiTranspose_8u_C1R : |
|
|
|
|
type == CV_8UC3 ? (ippiTranspose)ippiTranspose_8u_C3R : |
|
|
|
|
type == CV_8UC4 ? (ippiTranspose)ippiTranspose_8u_C4R : |
|
|
|
|
type == CV_16UC1 ? (ippiTranspose)ippiTranspose_16u_C1R : |
|
|
|
|
type == CV_16UC3 ? (ippiTranspose)ippiTranspose_16u_C3R : |
|
|
|
|
type == CV_16UC4 ? (ippiTranspose)ippiTranspose_16u_C4R : |
|
|
|
|
type == CV_16SC1 ? (ippiTranspose)ippiTranspose_16s_C1R : |
|
|
|
|
type == CV_16SC3 ? (ippiTranspose)ippiTranspose_16s_C3R : |
|
|
|
|
type == CV_16SC4 ? (ippiTranspose)ippiTranspose_16s_C4R : |
|
|
|
|
type == CV_32SC1 ? (ippiTranspose)ippiTranspose_32s_C1R : |
|
|
|
|
type == CV_32SC3 ? (ippiTranspose)ippiTranspose_32s_C3R : |
|
|
|
|
type == CV_32SC4 ? (ippiTranspose)ippiTranspose_32s_C4R : |
|
|
|
|
type == CV_32FC1 ? (ippiTranspose)ippiTranspose_32f_C1R : |
|
|
|
|
type == CV_32FC3 ? (ippiTranspose)ippiTranspose_32f_C3R : |
|
|
|
|
type == CV_32FC4 ? (ippiTranspose)ippiTranspose_32f_C4R : 0; |
|
|
|
|
|
|
|
|
|
IppiSize roiSize = { src.cols, src.rows }; |
|
|
|
|
if (ippFunc != 0 && ippFunc(src.data, (int)src.step, dst.data, (int)dst.step, roiSize) == ippStsNoErr) |
|
|
|
|
return; |
|
|
|
|
#endif |
|
|
|
|
|
|
|
|
|
if( dst.data == src.data ) |
|
|
|
|
{ |
|
|
|
|
TransposeInplaceFunc func = transposeInplaceTab[esz]; |
|
|
|
|