|
|
|
@ -3288,32 +3288,38 @@ void cv::cvtColor( InputArray _src, OutputArray _dst, int code, int dcn ) |
|
|
|
|
{ |
|
|
|
|
if ( CvtColorIPPLoop(src, dst, IPPReorderFunctor(ippiSwapChannelsC3C4RTab[depth], 0, 1, 2)) ) |
|
|
|
|
return; |
|
|
|
|
setIppErrorStatus(); |
|
|
|
|
} |
|
|
|
|
else if( code == CV_BGRA2BGR ) |
|
|
|
|
{ |
|
|
|
|
if ( CvtColorIPPLoop(src, dst, IPPGeneralFunctor(ippiCopyAC4C3RTab[depth])) ) |
|
|
|
|
return; |
|
|
|
|
setIppErrorStatus(); |
|
|
|
|
} |
|
|
|
|
else if( code == CV_BGR2RGBA ) |
|
|
|
|
{ |
|
|
|
|
if( CvtColorIPPLoop(src, dst, IPPReorderFunctor(ippiSwapChannelsC3C4RTab[depth], 2, 1, 0)) ) |
|
|
|
|
return; |
|
|
|
|
setIppErrorStatus(); |
|
|
|
|
} |
|
|
|
|
else if( code == CV_RGBA2BGR ) |
|
|
|
|
{ |
|
|
|
|
if( CvtColorIPPLoop(src, dst, IPPReorderFunctor(ippiSwapChannelsC4C3RTab[depth], 2, 1, 0)) ) |
|
|
|
|
return; |
|
|
|
|
setIppErrorStatus(); |
|
|
|
|
} |
|
|
|
|
else if( code == CV_RGB2BGR ) |
|
|
|
|
{ |
|
|
|
|
if( CvtColorIPPLoopCopy(src, dst, IPPReorderFunctor(ippiSwapChannelsC3RTab[depth], 2, 1, 0)) ) |
|
|
|
|
return; |
|
|
|
|
setIppErrorStatus(); |
|
|
|
|
} |
|
|
|
|
#if !defined(HAVE_IPP_ICV_ONLY) && (IPP_VERSION_X100 >= 801) |
|
|
|
|
else if( code == CV_RGBA2BGRA ) |
|
|
|
|
{ |
|
|
|
|
if( CvtColorIPPLoopCopy(src, dst, IPPReorderFunctor(ippiSwapChannelsC4RTab[depth], 2, 1, 0)) ) |
|
|
|
|
return; |
|
|
|
|
setIppErrorStatus(); |
|
|
|
|
} |
|
|
|
|
#endif |
|
|
|
|
#endif |
|
|
|
@ -3343,24 +3349,29 @@ void cv::cvtColor( InputArray _src, OutputArray _dst, int code, int dcn ) |
|
|
|
|
{ |
|
|
|
|
if (CvtColorIPPLoop(src, dst, IPPGeneralFunctor((ippiGeneralFunc)ippiBGRToBGR565_8u16u_C3R))) |
|
|
|
|
return; |
|
|
|
|
setIppErrorStatus(); |
|
|
|
|
} |
|
|
|
|
else if (code == CV_BGRA2BGR565) |
|
|
|
|
{ |
|
|
|
|
if (CvtColorIPPLoopCopy(src, dst, IPPReorderGeneralFunctor(ippiSwapChannelsC4C3RTab[depth], |
|
|
|
|
(ippiGeneralFunc)ippiBGRToBGR565_8u16u_C3R, 0, 1, 2, depth))) |
|
|
|
|
if (CvtColorIPPLoopCopy(src, dst, |
|
|
|
|
IPPReorderGeneralFunctor(ippiSwapChannelsC4C3RTab[depth], |
|
|
|
|
(ippiGeneralFunc)ippiBGRToBGR565_8u16u_C3R, 0, 1, 2, depth))) |
|
|
|
|
return; |
|
|
|
|
setIppErrorStatus(); |
|
|
|
|
} |
|
|
|
|
else if (code == CV_RGB2BGR565) |
|
|
|
|
{ |
|
|
|
|
if( CvtColorIPPLoopCopy(src, dst, IPPReorderGeneralFunctor(ippiSwapChannelsC3RTab[depth], |
|
|
|
|
(ippiGeneralFunc)ippiBGRToBGR565_8u16u_C3R, 2, 1, 0, depth)) ) |
|
|
|
|
return; |
|
|
|
|
setIppErrorStatus(); |
|
|
|
|
} |
|
|
|
|
else if (code == CV_RGBA2BGR565) |
|
|
|
|
{ |
|
|
|
|
if( CvtColorIPPLoopCopy(src, dst, IPPReorderGeneralFunctor(ippiSwapChannelsC4C3RTab[depth], |
|
|
|
|
(ippiGeneralFunc)ippiBGRToBGR565_8u16u_C3R, 2, 1, 0, depth)) ) |
|
|
|
|
return; |
|
|
|
|
setIppErrorStatus(); |
|
|
|
|
} |
|
|
|
|
CV_SUPPRESS_DEPRECATED_END |
|
|
|
|
#endif |
|
|
|
@ -3392,24 +3403,28 @@ void cv::cvtColor( InputArray _src, OutputArray _dst, int code, int dcn ) |
|
|
|
|
{ |
|
|
|
|
if (CvtColorIPPLoop(src, dst, IPPGeneralFunctor((ippiGeneralFunc)ippiBGR565ToBGR_16u8u_C3R))) |
|
|
|
|
return; |
|
|
|
|
setIppErrorStatus(); |
|
|
|
|
} |
|
|
|
|
else if (code == CV_BGR5652RGB) |
|
|
|
|
{ |
|
|
|
|
if (CvtColorIPPLoop(src, dst, IPPGeneralReorderFunctor((ippiGeneralFunc)ippiBGR565ToBGR_16u8u_C3R, |
|
|
|
|
ippiSwapChannelsC3RTab[depth], 2, 1, 0, depth))) |
|
|
|
|
return; |
|
|
|
|
setIppErrorStatus(); |
|
|
|
|
} |
|
|
|
|
if (code == CV_BGR5652BGRA) |
|
|
|
|
{ |
|
|
|
|
if (CvtColorIPPLoop(src, dst, IPPGeneralReorderFunctor((ippiGeneralFunc)ippiBGR565ToBGR_16u8u_C3R, |
|
|
|
|
ippiSwapChannelsC3C4RTab[depth], 0, 1, 2, depth))) |
|
|
|
|
return; |
|
|
|
|
setIppErrorStatus(); |
|
|
|
|
} |
|
|
|
|
else if (code == CV_BGR5652RGBA) |
|
|
|
|
{ |
|
|
|
|
if (CvtColorIPPLoop(src, dst, IPPGeneralReorderFunctor((ippiGeneralFunc)ippiBGR565ToBGR_16u8u_C3R, |
|
|
|
|
ippiSwapChannelsC3C4RTab[depth], 2, 1, 0, depth))) |
|
|
|
|
return; |
|
|
|
|
setIppErrorStatus(); |
|
|
|
|
} |
|
|
|
|
CV_SUPPRESS_DEPRECATED_END |
|
|
|
|
#endif |
|
|
|
@ -3432,21 +3447,25 @@ void cv::cvtColor( InputArray _src, OutputArray _dst, int code, int dcn ) |
|
|
|
|
{ |
|
|
|
|
if( CvtColorIPPLoop(src, dst, IPPColor2GrayFunctor(ippiColor2GrayC3Tab[depth])) ) |
|
|
|
|
return; |
|
|
|
|
setIppErrorStatus(); |
|
|
|
|
} |
|
|
|
|
else if( code == CV_RGB2GRAY ) |
|
|
|
|
{ |
|
|
|
|
if( CvtColorIPPLoop(src, dst, IPPGeneralFunctor(ippiRGB2GrayC3Tab[depth])) ) |
|
|
|
|
return; |
|
|
|
|
setIppErrorStatus(); |
|
|
|
|
} |
|
|
|
|
else if( code == CV_BGRA2GRAY ) |
|
|
|
|
{ |
|
|
|
|
if( CvtColorIPPLoop(src, dst, IPPColor2GrayFunctor(ippiColor2GrayC4Tab[depth])) ) |
|
|
|
|
return; |
|
|
|
|
setIppErrorStatus(); |
|
|
|
|
} |
|
|
|
|
else if( code == CV_RGBA2GRAY ) |
|
|
|
|
{ |
|
|
|
|
if( CvtColorIPPLoop(src, dst, IPPGeneralFunctor(ippiRGB2GrayC4Tab[depth])) ) |
|
|
|
|
return; |
|
|
|
|
setIppErrorStatus(); |
|
|
|
|
} |
|
|
|
|
#endif |
|
|
|
|
|
|
|
|
@ -3484,11 +3503,13 @@ void cv::cvtColor( InputArray _src, OutputArray _dst, int code, int dcn ) |
|
|
|
|
{ |
|
|
|
|
if( CvtColorIPPLoop(src, dst, IPPGray2BGRFunctor(ippiCopyP3C3RTab[depth])) ) |
|
|
|
|
return; |
|
|
|
|
setIppErrorStatus(); |
|
|
|
|
} |
|
|
|
|
else if( code == CV_GRAY2BGRA ) |
|
|
|
|
{ |
|
|
|
|
if( CvtColorIPPLoop(src, dst, IPPGray2BGRAFunctor(ippiCopyP3C3RTab[depth], ippiSwapChannelsC3C4RTab[depth], depth)) ) |
|
|
|
|
return; |
|
|
|
|
setIppErrorStatus(); |
|
|
|
|
} |
|
|
|
|
#endif |
|
|
|
|
|
|
|
|
@ -3532,24 +3553,28 @@ void cv::cvtColor( InputArray _src, OutputArray _dst, int code, int dcn ) |
|
|
|
|
{ |
|
|
|
|
if (CvtColorIPPLoop(src, dst, IPPGeneralFunctor((ippiGeneralFunc)ippiRGBToYUV_8u_C3R))) |
|
|
|
|
return; |
|
|
|
|
setIppErrorStatus(); |
|
|
|
|
} |
|
|
|
|
else if (code == CV_BGR2YUV && scn == 3 && depth == CV_8U) |
|
|
|
|
{ |
|
|
|
|
if (CvtColorIPPLoop(src, dst, IPPReorderGeneralFunctor(ippiSwapChannelsC3RTab[depth], |
|
|
|
|
(ippiGeneralFunc)ippiRGBToYUV_8u_C3R, 2, 1, 0, depth))) |
|
|
|
|
return; |
|
|
|
|
setIppErrorStatus(); |
|
|
|
|
} |
|
|
|
|
else if (code == CV_RGB2YUV && scn == 4 && depth == CV_8U) |
|
|
|
|
{ |
|
|
|
|
if (CvtColorIPPLoop(src, dst, IPPReorderGeneralFunctor(ippiSwapChannelsC4C3RTab[depth], |
|
|
|
|
(ippiGeneralFunc)ippiRGBToYUV_8u_C3R, 0, 1, 2, depth))) |
|
|
|
|
return; |
|
|
|
|
setIppErrorStatus(); |
|
|
|
|
} |
|
|
|
|
else if (code == CV_BGR2YUV && scn == 4 && depth == CV_8U) |
|
|
|
|
{ |
|
|
|
|
if (CvtColorIPPLoop(src, dst, IPPReorderGeneralFunctor(ippiSwapChannelsC4C3RTab[depth], |
|
|
|
|
(ippiGeneralFunc)ippiRGBToYUV_8u_C3R, 2, 1, 0, depth))) |
|
|
|
|
return; |
|
|
|
|
setIppErrorStatus(); |
|
|
|
|
} |
|
|
|
|
#endif |
|
|
|
|
|
|
|
|
@ -3587,24 +3612,28 @@ void cv::cvtColor( InputArray _src, OutputArray _dst, int code, int dcn ) |
|
|
|
|
{ |
|
|
|
|
if (CvtColorIPPLoop(src, dst, IPPGeneralFunctor((ippiGeneralFunc)ippiYUVToRGB_8u_C3R))) |
|
|
|
|
return; |
|
|
|
|
setIppErrorStatus(); |
|
|
|
|
} |
|
|
|
|
else if (code == CV_YUV2BGR && dcn == 3 && depth == CV_8U) |
|
|
|
|
{ |
|
|
|
|
if (CvtColorIPPLoop(src, dst, IPPGeneralReorderFunctor((ippiGeneralFunc)ippiYUVToRGB_8u_C3R, |
|
|
|
|
ippiSwapChannelsC3RTab[depth], 2, 1, 0, depth))) |
|
|
|
|
return; |
|
|
|
|
setIppErrorStatus(); |
|
|
|
|
} |
|
|
|
|
else if (code == CV_YUV2RGB && dcn == 4 && depth == CV_8U) |
|
|
|
|
{ |
|
|
|
|
if (CvtColorIPPLoop(src, dst, IPPGeneralReorderFunctor((ippiGeneralFunc)ippiYUVToRGB_8u_C3R, |
|
|
|
|
ippiSwapChannelsC3C4RTab[depth], 0, 1, 2, depth))) |
|
|
|
|
return; |
|
|
|
|
setIppErrorStatus(); |
|
|
|
|
} |
|
|
|
|
else if (code == CV_YUV2BGR && dcn == 4 && depth == CV_8U) |
|
|
|
|
{ |
|
|
|
|
if (CvtColorIPPLoop(src, dst, IPPGeneralReorderFunctor((ippiGeneralFunc)ippiYUVToRGB_8u_C3R, |
|
|
|
|
ippiSwapChannelsC3C4RTab[depth], 2, 1, 0, depth))) |
|
|
|
|
return; |
|
|
|
|
setIppErrorStatus(); |
|
|
|
|
} |
|
|
|
|
#endif |
|
|
|
|
|
|
|
|
@ -3629,21 +3658,25 @@ void cv::cvtColor( InputArray _src, OutputArray _dst, int code, int dcn ) |
|
|
|
|
{ |
|
|
|
|
if( CvtColorIPPLoopCopy(src, dst, IPPReorderGeneralFunctor(ippiSwapChannelsC3RTab[depth], ippiRGB2XYZTab[depth], 2, 1, 0, depth)) ) |
|
|
|
|
return; |
|
|
|
|
setIppErrorStatus(); |
|
|
|
|
} |
|
|
|
|
else if( code == CV_BGR2XYZ && scn == 4 ) |
|
|
|
|
{ |
|
|
|
|
if( CvtColorIPPLoop(src, dst, IPPReorderGeneralFunctor(ippiSwapChannelsC4C3RTab[depth], ippiRGB2XYZTab[depth], 2, 1, 0, depth)) ) |
|
|
|
|
return; |
|
|
|
|
setIppErrorStatus(); |
|
|
|
|
} |
|
|
|
|
else if( code == CV_RGB2XYZ && scn == 3 ) |
|
|
|
|
{ |
|
|
|
|
if( CvtColorIPPLoopCopy(src, dst, IPPGeneralFunctor(ippiRGB2XYZTab[depth])) ) |
|
|
|
|
return; |
|
|
|
|
setIppErrorStatus(); |
|
|
|
|
} |
|
|
|
|
else if( code == CV_RGB2XYZ && scn == 4 ) |
|
|
|
|
{ |
|
|
|
|
if( CvtColorIPPLoop(src, dst, IPPReorderGeneralFunctor(ippiSwapChannelsC4C3RTab[depth], ippiRGB2XYZTab[depth], 0, 1, 2, depth)) ) |
|
|
|
|
return; |
|
|
|
|
setIppErrorStatus(); |
|
|
|
|
} |
|
|
|
|
#endif |
|
|
|
|
|
|
|
|
@ -3668,21 +3701,25 @@ void cv::cvtColor( InputArray _src, OutputArray _dst, int code, int dcn ) |
|
|
|
|
{ |
|
|
|
|
if( CvtColorIPPLoopCopy(src, dst, IPPGeneralReorderFunctor(ippiXYZ2RGBTab[depth], ippiSwapChannelsC3RTab[depth], 2, 1, 0, depth)) ) |
|
|
|
|
return; |
|
|
|
|
setIppErrorStatus(); |
|
|
|
|
} |
|
|
|
|
else if( code == CV_XYZ2BGR && dcn == 4 ) |
|
|
|
|
{ |
|
|
|
|
if( CvtColorIPPLoop(src, dst, IPPGeneralReorderFunctor(ippiXYZ2RGBTab[depth], ippiSwapChannelsC3C4RTab[depth], 2, 1, 0, depth)) ) |
|
|
|
|
return; |
|
|
|
|
setIppErrorStatus(); |
|
|
|
|
} |
|
|
|
|
if( code == CV_XYZ2RGB && dcn == 3 ) |
|
|
|
|
{ |
|
|
|
|
if( CvtColorIPPLoopCopy(src, dst, IPPGeneralFunctor(ippiXYZ2RGBTab[depth])) ) |
|
|
|
|
return; |
|
|
|
|
setIppErrorStatus(); |
|
|
|
|
} |
|
|
|
|
else if( code == CV_XYZ2RGB && dcn == 4 ) |
|
|
|
|
{ |
|
|
|
|
if( CvtColorIPPLoop(src, dst, IPPGeneralReorderFunctor(ippiXYZ2RGBTab[depth], ippiSwapChannelsC3C4RTab[depth], 0, 1, 2, depth)) ) |
|
|
|
|
return; |
|
|
|
|
setIppErrorStatus(); |
|
|
|
|
} |
|
|
|
|
#endif |
|
|
|
|
|
|
|
|
@ -3713,41 +3750,49 @@ void cv::cvtColor( InputArray _src, OutputArray _dst, int code, int dcn ) |
|
|
|
|
{ |
|
|
|
|
if( CvtColorIPPLoopCopy(src, dst, IPPReorderGeneralFunctor(ippiSwapChannelsC3RTab[depth], ippiRGB2HSVTab[depth], 2, 1, 0, depth)) ) |
|
|
|
|
return; |
|
|
|
|
setIppErrorStatus(); |
|
|
|
|
} |
|
|
|
|
else if( code == CV_BGR2HSV_FULL && scn == 4 ) |
|
|
|
|
{ |
|
|
|
|
if( CvtColorIPPLoop(src, dst, IPPReorderGeneralFunctor(ippiSwapChannelsC4C3RTab[depth], ippiRGB2HSVTab[depth], 2, 1, 0, depth)) ) |
|
|
|
|
return; |
|
|
|
|
setIppErrorStatus(); |
|
|
|
|
} |
|
|
|
|
else if( code == CV_RGB2HSV_FULL && scn == 3 ) |
|
|
|
|
{ |
|
|
|
|
if( CvtColorIPPLoopCopy(src, dst, IPPGeneralFunctor(ippiRGB2HSVTab[depth])) ) |
|
|
|
|
return; |
|
|
|
|
setIppErrorStatus(); |
|
|
|
|
} |
|
|
|
|
else if( code == CV_RGB2HSV_FULL && scn == 4 ) |
|
|
|
|
{ |
|
|
|
|
if( CvtColorIPPLoop(src, dst, IPPReorderGeneralFunctor(ippiSwapChannelsC4C3RTab[depth], ippiRGB2HSVTab[depth], 0, 1, 2, depth)) ) |
|
|
|
|
return; |
|
|
|
|
setIppErrorStatus(); |
|
|
|
|
} |
|
|
|
|
else if( code == CV_BGR2HLS_FULL && scn == 3 ) |
|
|
|
|
{ |
|
|
|
|
if( CvtColorIPPLoopCopy(src, dst, IPPReorderGeneralFunctor(ippiSwapChannelsC3RTab[depth], ippiRGB2HLSTab[depth], 2, 1, 0, depth)) ) |
|
|
|
|
return; |
|
|
|
|
setIppErrorStatus(); |
|
|
|
|
} |
|
|
|
|
else if( code == CV_BGR2HLS_FULL && scn == 4 ) |
|
|
|
|
{ |
|
|
|
|
if( CvtColorIPPLoop(src, dst, IPPReorderGeneralFunctor(ippiSwapChannelsC4C3RTab[depth], ippiRGB2HLSTab[depth], 2, 1, 0, depth)) ) |
|
|
|
|
return; |
|
|
|
|
setIppErrorStatus(); |
|
|
|
|
} |
|
|
|
|
else if( code == CV_RGB2HLS_FULL && scn == 3 ) |
|
|
|
|
{ |
|
|
|
|
if( CvtColorIPPLoopCopy(src, dst, IPPGeneralFunctor(ippiRGB2HLSTab[depth])) ) |
|
|
|
|
return; |
|
|
|
|
setIppErrorStatus(); |
|
|
|
|
} |
|
|
|
|
else if( code == CV_RGB2HLS_FULL && scn == 4 ) |
|
|
|
|
{ |
|
|
|
|
if( CvtColorIPPLoop(src, dst, IPPReorderGeneralFunctor(ippiSwapChannelsC4C3RTab[depth], ippiRGB2HLSTab[depth], 0, 1, 2, depth)) ) |
|
|
|
|
return; |
|
|
|
|
setIppErrorStatus(); |
|
|
|
|
} |
|
|
|
|
} |
|
|
|
|
#endif |
|
|
|
@ -3794,41 +3839,49 @@ void cv::cvtColor( InputArray _src, OutputArray _dst, int code, int dcn ) |
|
|
|
|
{ |
|
|
|
|
if( CvtColorIPPLoopCopy(src, dst, IPPGeneralReorderFunctor(ippiHSV2RGBTab[depth], ippiSwapChannelsC3RTab[depth], 2, 1, 0, depth)) ) |
|
|
|
|
return; |
|
|
|
|
setIppErrorStatus(); |
|
|
|
|
} |
|
|
|
|
else if( code == CV_HSV2BGR_FULL && dcn == 4 ) |
|
|
|
|
{ |
|
|
|
|
if( CvtColorIPPLoop(src, dst, IPPGeneralReorderFunctor(ippiHSV2RGBTab[depth], ippiSwapChannelsC3C4RTab[depth], 2, 1, 0, depth)) ) |
|
|
|
|
return; |
|
|
|
|
setIppErrorStatus(); |
|
|
|
|
} |
|
|
|
|
else if( code == CV_HSV2RGB_FULL && dcn == 3 ) |
|
|
|
|
{ |
|
|
|
|
if( CvtColorIPPLoopCopy(src, dst, IPPGeneralFunctor(ippiHSV2RGBTab[depth])) ) |
|
|
|
|
return; |
|
|
|
|
setIppErrorStatus(); |
|
|
|
|
} |
|
|
|
|
else if( code == CV_HSV2RGB_FULL && dcn == 4 ) |
|
|
|
|
{ |
|
|
|
|
if( CvtColorIPPLoop(src, dst, IPPGeneralReorderFunctor(ippiHSV2RGBTab[depth], ippiSwapChannelsC3C4RTab[depth], 0, 1, 2, depth)) ) |
|
|
|
|
return; |
|
|
|
|
setIppErrorStatus(); |
|
|
|
|
} |
|
|
|
|
else if( code == CV_HLS2BGR_FULL && dcn == 3 ) |
|
|
|
|
{ |
|
|
|
|
if( CvtColorIPPLoopCopy(src, dst, IPPGeneralReorderFunctor(ippiHLS2RGBTab[depth], ippiSwapChannelsC3RTab[depth], 2, 1, 0, depth)) ) |
|
|
|
|
return; |
|
|
|
|
setIppErrorStatus(); |
|
|
|
|
} |
|
|
|
|
else if( code == CV_HLS2BGR_FULL && dcn == 4 ) |
|
|
|
|
{ |
|
|
|
|
if( CvtColorIPPLoop(src, dst, IPPGeneralReorderFunctor(ippiHLS2RGBTab[depth], ippiSwapChannelsC3C4RTab[depth], 2, 1, 0, depth)) ) |
|
|
|
|
return; |
|
|
|
|
setIppErrorStatus(); |
|
|
|
|
} |
|
|
|
|
else if( code == CV_HLS2RGB_FULL && dcn == 3 ) |
|
|
|
|
{ |
|
|
|
|
if( CvtColorIPPLoopCopy(src, dst, IPPGeneralFunctor(ippiHLS2RGBTab[depth])) ) |
|
|
|
|
return; |
|
|
|
|
setIppErrorStatus(); |
|
|
|
|
} |
|
|
|
|
else if( code == CV_HLS2RGB_FULL && dcn == 4 ) |
|
|
|
|
{ |
|
|
|
|
if( CvtColorIPPLoop(src, dst, IPPGeneralReorderFunctor(ippiHLS2RGBTab[depth], ippiSwapChannelsC3C4RTab[depth], 0, 1, 2, depth)) ) |
|
|
|
|
return; |
|
|
|
|
setIppErrorStatus(); |
|
|
|
|
} |
|
|
|
|
} |
|
|
|
|
#endif |
|
|
|
@ -3868,47 +3921,55 @@ void cv::cvtColor( InputArray _src, OutputArray _dst, int code, int dcn ) |
|
|
|
|
{ |
|
|
|
|
if (CvtColorIPPLoop(src, dst, IPPGeneralFunctor((ippiGeneralFunc)ippiBGRToLab_8u_C3R))) |
|
|
|
|
return; |
|
|
|
|
setIppErrorStatus(); |
|
|
|
|
} |
|
|
|
|
else if (code == CV_LBGR2Lab && scn == 4 && depth == CV_8U) |
|
|
|
|
{ |
|
|
|
|
if (CvtColorIPPLoop(src, dst, IPPReorderGeneralFunctor(ippiSwapChannelsC4C3RTab[depth], |
|
|
|
|
(ippiGeneralFunc)ippiBGRToLab_8u_C3R, 0, 1, 2, depth))) |
|
|
|
|
return; |
|
|
|
|
setIppErrorStatus(); |
|
|
|
|
} |
|
|
|
|
else if (code == CV_LRGB2Lab && scn == 3 && depth == CV_8U) |
|
|
|
|
{ |
|
|
|
|
if (CvtColorIPPLoop(src, dst, IPPReorderGeneralFunctor(ippiSwapChannelsC3RTab[depth], |
|
|
|
|
(ippiGeneralFunc)ippiBGRToLab_8u_C3R, 2, 1, 0, depth))) |
|
|
|
|
return; |
|
|
|
|
setIppErrorStatus(); |
|
|
|
|
} |
|
|
|
|
else if (code == CV_LRGB2Lab && scn == 4 && depth == CV_8U) |
|
|
|
|
{ |
|
|
|
|
if (CvtColorIPPLoop(src, dst, IPPReorderGeneralFunctor(ippiSwapChannelsC4C3RTab[depth], |
|
|
|
|
(ippiGeneralFunc)ippiBGRToLab_8u_C3R, 2, 1, 0, depth))) |
|
|
|
|
return; |
|
|
|
|
setIppErrorStatus(); |
|
|
|
|
} |
|
|
|
|
else if (code == CV_LRGB2Luv && scn == 3) |
|
|
|
|
{ |
|
|
|
|
if (CvtColorIPPLoop(src, dst, IPPGeneralFunctor(ippiRGBToLUVTab[depth]))) |
|
|
|
|
return; |
|
|
|
|
setIppErrorStatus(); |
|
|
|
|
} |
|
|
|
|
else if (code == CV_LRGB2Luv && scn == 4) |
|
|
|
|
{ |
|
|
|
|
if (CvtColorIPPLoop(src, dst, IPPReorderGeneralFunctor(ippiSwapChannelsC4C3RTab[depth], |
|
|
|
|
ippiRGBToLUVTab[depth], 0, 1, 2, depth))) |
|
|
|
|
return; |
|
|
|
|
setIppErrorStatus(); |
|
|
|
|
} |
|
|
|
|
else if (code == CV_LBGR2Luv && scn == 3) |
|
|
|
|
{ |
|
|
|
|
if (CvtColorIPPLoop(src, dst, IPPReorderGeneralFunctor(ippiSwapChannelsC3RTab[depth], |
|
|
|
|
ippiRGBToLUVTab[depth], 2, 1, 0, depth))) |
|
|
|
|
return; |
|
|
|
|
setIppErrorStatus(); |
|
|
|
|
} |
|
|
|
|
else if (code == CV_LBGR2Luv && scn == 4) |
|
|
|
|
{ |
|
|
|
|
if (CvtColorIPPLoop(src, dst, IPPReorderGeneralFunctor(ippiSwapChannelsC4C3RTab[depth], |
|
|
|
|
ippiRGBToLUVTab[depth], 2, 1, 0, depth))) |
|
|
|
|
return; |
|
|
|
|
setIppErrorStatus(); |
|
|
|
|
} |
|
|
|
|
#endif |
|
|
|
|
|
|
|
|
@ -3949,24 +4010,28 @@ void cv::cvtColor( InputArray _src, OutputArray _dst, int code, int dcn ) |
|
|
|
|
{ |
|
|
|
|
if( CvtColorIPPLoop(src, dst, IPPGeneralFunctor((ippiGeneralFunc)ippiLabToBGR_8u_C3R)) ) |
|
|
|
|
return; |
|
|
|
|
setIppErrorStatus(); |
|
|
|
|
} |
|
|
|
|
else if( code == CV_Lab2LBGR && dcn == 4 && depth == CV_8U ) |
|
|
|
|
{ |
|
|
|
|
if( CvtColorIPPLoop(src, dst, IPPGeneralReorderFunctor((ippiGeneralFunc)ippiLabToBGR_8u_C3R, |
|
|
|
|
ippiSwapChannelsC3C4RTab[depth], 0, 1, 2, depth)) ) |
|
|
|
|
return; |
|
|
|
|
setIppErrorStatus(); |
|
|
|
|
} |
|
|
|
|
if( code == CV_Lab2LRGB && dcn == 3 && depth == CV_8U ) |
|
|
|
|
{ |
|
|
|
|
if( CvtColorIPPLoop(src, dst, IPPGeneralReorderFunctor((ippiGeneralFunc)ippiLabToBGR_8u_C3R, |
|
|
|
|
ippiSwapChannelsC3RTab[depth], 2, 1, 0, depth)) ) |
|
|
|
|
return; |
|
|
|
|
setIppErrorStatus(); |
|
|
|
|
} |
|
|
|
|
else if( code == CV_Lab2LRGB && dcn == 4 && depth == CV_8U ) |
|
|
|
|
{ |
|
|
|
|
if( CvtColorIPPLoop(src, dst, IPPGeneralReorderFunctor((ippiGeneralFunc)ippiLabToBGR_8u_C3R, |
|
|
|
|
ippiSwapChannelsC3C4RTab[depth], 2, 1, 0, depth)) ) |
|
|
|
|
return; |
|
|
|
|
setIppErrorStatus(); |
|
|
|
|
} |
|
|
|
|
#endif |
|
|
|
|
if( code == CV_Luv2LRGB && dcn == 3 ) |
|
|
|
@ -4194,6 +4259,7 @@ void cv::cvtColor( InputArray _src, OutputArray _dst, int code, int dcn ) |
|
|
|
|
#if defined(HAVE_IPP) && !defined(HAVE_IPP_ICV_ONLY) |
|
|
|
|
if (CvtColorIPPLoop(src, dst, IPPGeneralFunctor((ippiGeneralFunc)ippiAlphaPremul_8u_AC4R))) |
|
|
|
|
return; |
|
|
|
|
setIppErrorStatus(); |
|
|
|
|
#endif |
|
|
|
|
CvtColorLoop(src, dst, RGBA2mRGBA<uchar>()); |
|
|
|
|
} |
|
|
|
|