parent
8f6a2438a7
commit
bbc8605530
2 changed files with 444 additions and 437 deletions
@ -1,269 +1,276 @@ |
|||||||
#include "perf_precomp.hpp" |
#include "perf_precomp.hpp" |
||||||
|
|
||||||
using namespace std; |
using namespace std; |
||||||
using namespace cv; |
using namespace cv; |
||||||
using namespace perf; |
using namespace perf; |
||||||
using std::tr1::make_tuple; |
using std::tr1::make_tuple; |
||||||
using std::tr1::get; |
using std::tr1::get; |
||||||
|
|
||||||
//extra color conversions supported implicitly
|
//extra color conversions supported implicitly
|
||||||
enum
|
enum
|
||||||
{ |
{ |
||||||
CX_BGRA2HLS = CV_COLORCVT_MAX + CV_BGR2HLS, |
CX_BGRA2HLS = CV_COLORCVT_MAX + CV_BGR2HLS, |
||||||
CX_BGRA2HLS_FULL = CV_COLORCVT_MAX + CV_BGR2HLS_FULL, |
CX_BGRA2HLS_FULL = CV_COLORCVT_MAX + CV_BGR2HLS_FULL, |
||||||
CX_BGRA2HSV = CV_COLORCVT_MAX + CV_BGR2HSV, |
CX_BGRA2HSV = CV_COLORCVT_MAX + CV_BGR2HSV, |
||||||
CX_BGRA2HSV_FULL = CV_COLORCVT_MAX + CV_BGR2HSV_FULL, |
CX_BGRA2HSV_FULL = CV_COLORCVT_MAX + CV_BGR2HSV_FULL, |
||||||
CX_BGRA2Lab = CV_COLORCVT_MAX + CV_BGR2Lab, |
CX_BGRA2Lab = CV_COLORCVT_MAX + CV_BGR2Lab, |
||||||
CX_BGRA2Luv = CV_COLORCVT_MAX + CV_BGR2Luv, |
CX_BGRA2Luv = CV_COLORCVT_MAX + CV_BGR2Luv, |
||||||
CX_BGRA2XYZ = CV_COLORCVT_MAX + CV_BGR2XYZ, |
CX_BGRA2XYZ = CV_COLORCVT_MAX + CV_BGR2XYZ, |
||||||
CX_BGRA2YCrCb = CV_COLORCVT_MAX + CV_BGR2YCrCb, |
CX_BGRA2YCrCb = CV_COLORCVT_MAX + CV_BGR2YCrCb, |
||||||
CX_BGRA2YUV = CV_COLORCVT_MAX + CV_BGR2YUV, |
CX_BGRA2YUV = CV_COLORCVT_MAX + CV_BGR2YUV, |
||||||
CX_HLS2BGRA = CV_COLORCVT_MAX + CV_HLS2BGR, |
CX_HLS2BGRA = CV_COLORCVT_MAX + CV_HLS2BGR, |
||||||
CX_HLS2BGRA_FULL = CV_COLORCVT_MAX + CV_HLS2BGR_FULL, |
CX_HLS2BGRA_FULL = CV_COLORCVT_MAX + CV_HLS2BGR_FULL, |
||||||
CX_HLS2RGBA = CV_COLORCVT_MAX + CV_HLS2RGB, |
CX_HLS2RGBA = CV_COLORCVT_MAX + CV_HLS2RGB, |
||||||
CX_HLS2RGBA_FULL = CV_COLORCVT_MAX + CV_HLS2RGB_FULL, |
CX_HLS2RGBA_FULL = CV_COLORCVT_MAX + CV_HLS2RGB_FULL, |
||||||
CX_HSV2BGRA = CV_COLORCVT_MAX + CV_HSV2BGR, |
CX_HSV2BGRA = CV_COLORCVT_MAX + CV_HSV2BGR, |
||||||
CX_HSV2BGRA_FULL = CV_COLORCVT_MAX + CV_HSV2BGR_FULL, |
CX_HSV2BGRA_FULL = CV_COLORCVT_MAX + CV_HSV2BGR_FULL, |
||||||
CX_HSV2RGBA = CV_COLORCVT_MAX + CV_HSV2RGB, |
CX_HSV2RGBA = CV_COLORCVT_MAX + CV_HSV2RGB, |
||||||
CX_HSV2RGBA_FULL = CV_COLORCVT_MAX + CV_HSV2RGB_FULL, |
CX_HSV2RGBA_FULL = CV_COLORCVT_MAX + CV_HSV2RGB_FULL, |
||||||
CX_Lab2BGRA = CV_COLORCVT_MAX + CV_Lab2BGR, |
CX_Lab2BGRA = CV_COLORCVT_MAX + CV_Lab2BGR, |
||||||
CX_Lab2LBGRA = CV_COLORCVT_MAX + CV_Lab2LBGR, |
CX_Lab2LBGRA = CV_COLORCVT_MAX + CV_Lab2LBGR, |
||||||
CX_Lab2LRGBA = CV_COLORCVT_MAX + CV_Lab2LRGB, |
CX_Lab2LRGBA = CV_COLORCVT_MAX + CV_Lab2LRGB, |
||||||
CX_Lab2RGBA = CV_COLORCVT_MAX + CV_Lab2RGB, |
CX_Lab2RGBA = CV_COLORCVT_MAX + CV_Lab2RGB, |
||||||
CX_LBGRA2Lab = CV_COLORCVT_MAX + CV_LBGR2Lab, |
CX_LBGRA2Lab = CV_COLORCVT_MAX + CV_LBGR2Lab, |
||||||
CX_LBGRA2Luv = CV_COLORCVT_MAX + CV_LBGR2Luv, |
CX_LBGRA2Luv = CV_COLORCVT_MAX + CV_LBGR2Luv, |
||||||
CX_LRGBA2Lab = CV_COLORCVT_MAX + CV_LRGB2Lab, |
CX_LRGBA2Lab = CV_COLORCVT_MAX + CV_LRGB2Lab, |
||||||
CX_LRGBA2Luv = CV_COLORCVT_MAX + CV_LRGB2Luv, |
CX_LRGBA2Luv = CV_COLORCVT_MAX + CV_LRGB2Luv, |
||||||
CX_Luv2BGRA = CV_COLORCVT_MAX + CV_Luv2BGR, |
CX_Luv2BGRA = CV_COLORCVT_MAX + CV_Luv2BGR, |
||||||
CX_Luv2LBGRA = CV_COLORCVT_MAX + CV_Luv2LBGR, |
CX_Luv2LBGRA = CV_COLORCVT_MAX + CV_Luv2LBGR, |
||||||
CX_Luv2LRGBA = CV_COLORCVT_MAX + CV_Luv2LRGB, |
CX_Luv2LRGBA = CV_COLORCVT_MAX + CV_Luv2LRGB, |
||||||
CX_Luv2RGBA = CV_COLORCVT_MAX + CV_Luv2RGB, |
CX_Luv2RGBA = CV_COLORCVT_MAX + CV_Luv2RGB, |
||||||
CX_RGBA2HLS = CV_COLORCVT_MAX + CV_RGB2HLS, |
CX_RGBA2HLS = CV_COLORCVT_MAX + CV_RGB2HLS, |
||||||
CX_RGBA2HLS_FULL = CV_COLORCVT_MAX + CV_RGB2HLS_FULL, |
CX_RGBA2HLS_FULL = CV_COLORCVT_MAX + CV_RGB2HLS_FULL, |
||||||
CX_RGBA2HSV = CV_COLORCVT_MAX + CV_RGB2HSV, |
CX_RGBA2HSV = CV_COLORCVT_MAX + CV_RGB2HSV, |
||||||
CX_RGBA2HSV_FULL = CV_COLORCVT_MAX + CV_RGB2HSV_FULL, |
CX_RGBA2HSV_FULL = CV_COLORCVT_MAX + CV_RGB2HSV_FULL, |
||||||
CX_RGBA2Lab = CV_COLORCVT_MAX + CV_RGB2Lab, |
CX_RGBA2Lab = CV_COLORCVT_MAX + CV_RGB2Lab, |
||||||
CX_RGBA2Luv = CV_COLORCVT_MAX + CV_RGB2Luv, |
CX_RGBA2Luv = CV_COLORCVT_MAX + CV_RGB2Luv, |
||||||
CX_RGBA2XYZ = CV_COLORCVT_MAX + CV_RGB2XYZ, |
CX_RGBA2XYZ = CV_COLORCVT_MAX + CV_RGB2XYZ, |
||||||
CX_RGBA2YCrCb = CV_COLORCVT_MAX + CV_RGB2YCrCb, |
CX_RGBA2YCrCb = CV_COLORCVT_MAX + CV_RGB2YCrCb, |
||||||
CX_RGBA2YUV = CV_COLORCVT_MAX + CV_RGB2YUV, |
CX_RGBA2YUV = CV_COLORCVT_MAX + CV_RGB2YUV, |
||||||
CX_XYZ2BGRA = CV_COLORCVT_MAX + CV_XYZ2BGR, |
CX_XYZ2BGRA = CV_COLORCVT_MAX + CV_XYZ2BGR, |
||||||
CX_XYZ2RGBA = CV_COLORCVT_MAX + CV_XYZ2RGB, |
CX_XYZ2RGBA = CV_COLORCVT_MAX + CV_XYZ2RGB, |
||||||
CX_YCrCb2BGRA = CV_COLORCVT_MAX + CV_YCrCb2BGR, |
CX_YCrCb2BGRA = CV_COLORCVT_MAX + CV_YCrCb2BGR, |
||||||
CX_YCrCb2RGBA = CV_COLORCVT_MAX + CV_YCrCb2RGB, |
CX_YCrCb2RGBA = CV_COLORCVT_MAX + CV_YCrCb2RGB, |
||||||
CX_YUV2BGRA = CV_COLORCVT_MAX + CV_YUV2BGR, |
CX_YUV2BGRA = CV_COLORCVT_MAX + CV_YUV2BGR, |
||||||
CX_YUV2RGBA = CV_COLORCVT_MAX + CV_YUV2RGB |
CX_YUV2RGBA = CV_COLORCVT_MAX + CV_YUV2RGB |
||||||
}; |
}; |
||||||
|
|
||||||
CV_ENUM(CvtMode, |
CV_ENUM(CvtMode, |
||||||
CV_BayerBG2BGR, CV_BayerBG2BGR_VNG, CV_BayerBG2GRAY, |
CV_BayerBG2BGR, CV_BayerBG2BGR_VNG, CV_BayerBG2GRAY, |
||||||
CV_BayerGB2BGR, CV_BayerGB2BGR_VNG, CV_BayerGB2GRAY, |
CV_BayerGB2BGR, CV_BayerGB2BGR_VNG, CV_BayerGB2GRAY, |
||||||
CV_BayerGR2BGR, CV_BayerGR2BGR_VNG, CV_BayerGR2GRAY, |
CV_BayerGR2BGR, CV_BayerGR2BGR_VNG, CV_BayerGR2GRAY, |
||||||
CV_BayerRG2BGR, CV_BayerRG2BGR_VNG, CV_BayerRG2GRAY, |
CV_BayerRG2BGR, CV_BayerRG2BGR_VNG, CV_BayerRG2GRAY, |
||||||
|
|
||||||
CV_BGR2BGR555, CV_BGR2BGR565, CV_BGR2BGRA, CV_BGR2GRAY, |
CV_BGR2BGR555, CV_BGR2BGR565, CV_BGR2BGRA, CV_BGR2GRAY, |
||||||
CV_BGR2HLS, CV_BGR2HLS_FULL, CV_BGR2HSV, CV_BGR2HSV_FULL, |
CV_BGR2HLS, CV_BGR2HLS_FULL, CV_BGR2HSV, CV_BGR2HSV_FULL, |
||||||
CV_BGR2Lab, CV_BGR2Luv, CV_BGR2RGB, CV_BGR2RGBA, CV_BGR2XYZ, |
CV_BGR2Lab, CV_BGR2Luv, CV_BGR2RGB, CV_BGR2RGBA, CV_BGR2XYZ, |
||||||
CV_BGR2YCrCb, CV_BGR2YUV, CV_BGR5552BGR, CV_BGR5552BGRA, |
CV_BGR2YCrCb, CV_BGR2YUV, CV_BGR5552BGR, CV_BGR5552BGRA, |
||||||
|
|
||||||
CV_BGR5552GRAY, CV_BGR5552RGB, CV_BGR5552RGBA, CV_BGR5652BGR, |
CV_BGR5552GRAY, CV_BGR5552RGB, CV_BGR5552RGBA, CV_BGR5652BGR, |
||||||
CV_BGR5652BGRA, CV_BGR5652GRAY, CV_BGR5652RGB, CV_BGR5652RGBA, |
CV_BGR5652BGRA, CV_BGR5652GRAY, CV_BGR5652RGB, CV_BGR5652RGBA, |
||||||
|
|
||||||
CV_BGRA2BGR, CV_BGRA2BGR555, CV_BGRA2BGR565, CV_BGRA2GRAY, CV_BGRA2RGBA, |
CV_BGRA2BGR, CV_BGRA2BGR555, CV_BGRA2BGR565, CV_BGRA2GRAY, CV_BGRA2RGBA, |
||||||
CX_BGRA2HLS, CX_BGRA2HLS_FULL, CX_BGRA2HSV, CX_BGRA2HSV_FULL, |
CX_BGRA2HLS, CX_BGRA2HLS_FULL, CX_BGRA2HSV, CX_BGRA2HSV_FULL, |
||||||
CX_BGRA2Lab, CX_BGRA2Luv, CX_BGRA2XYZ, |
CX_BGRA2Lab, CX_BGRA2Luv, CX_BGRA2XYZ, |
||||||
CX_BGRA2YCrCb, CX_BGRA2YUV, |
CX_BGRA2YCrCb, CX_BGRA2YUV, |
||||||
|
|
||||||
CV_GRAY2BGR, CV_GRAY2BGR555, CV_GRAY2BGR565, CV_GRAY2BGRA, |
CV_GRAY2BGR, CV_GRAY2BGR555, CV_GRAY2BGR565, CV_GRAY2BGRA, |
||||||
|
|
||||||
CV_HLS2BGR, CV_HLS2BGR_FULL, CV_HLS2RGB, CV_HLS2RGB_FULL, |
CV_HLS2BGR, CV_HLS2BGR_FULL, CV_HLS2RGB, CV_HLS2RGB_FULL, |
||||||
CX_HLS2BGRA, CX_HLS2BGRA_FULL, CX_HLS2RGBA, CX_HLS2RGBA_FULL, |
CX_HLS2BGRA, CX_HLS2BGRA_FULL, CX_HLS2RGBA, CX_HLS2RGBA_FULL, |
||||||
|
|
||||||
CV_HSV2BGR, CV_HSV2BGR_FULL, CV_HSV2RGB, CV_HSV2RGB_FULL, |
CV_HSV2BGR, CV_HSV2BGR_FULL, CV_HSV2RGB, CV_HSV2RGB_FULL, |
||||||
CX_HSV2BGRA, CX_HSV2BGRA_FULL, CX_HSV2RGBA, CX_HSV2RGBA_FULL, |
CX_HSV2BGRA, CX_HSV2BGRA_FULL, CX_HSV2RGBA, CX_HSV2RGBA_FULL, |
||||||
|
|
||||||
CV_Lab2BGR, CV_Lab2LBGR, CV_Lab2LRGB, CV_Lab2RGB, |
CV_Lab2BGR, CV_Lab2LBGR, CV_Lab2LRGB, CV_Lab2RGB, |
||||||
CX_Lab2BGRA, CX_Lab2LBGRA, CX_Lab2LRGBA, CX_Lab2RGBA, |
CX_Lab2BGRA, CX_Lab2LBGRA, CX_Lab2LRGBA, CX_Lab2RGBA, |
||||||
|
|
||||||
CV_LBGR2Lab, CV_LBGR2Luv, CV_LRGB2Lab, CV_LRGB2Luv, |
CV_LBGR2Lab, CV_LBGR2Luv, CV_LRGB2Lab, CV_LRGB2Luv, |
||||||
CX_LBGRA2Lab, CX_LBGRA2Luv, CX_LRGBA2Lab, CX_LRGBA2Luv, |
CX_LBGRA2Lab, CX_LBGRA2Luv, CX_LRGBA2Lab, CX_LRGBA2Luv, |
||||||
|
|
||||||
CV_Luv2BGR, CV_Luv2LBGR, CV_Luv2LRGB, CV_Luv2RGB, |
CV_Luv2BGR, CV_Luv2LBGR, CV_Luv2LRGB, CV_Luv2RGB, |
||||||
CX_Luv2BGRA, CX_Luv2LBGRA, CX_Luv2LRGBA, CX_Luv2RGBA, |
CX_Luv2BGRA, CX_Luv2LBGRA, CX_Luv2LRGBA, CX_Luv2RGBA, |
||||||
|
|
||||||
CV_RGB2BGR555, CV_RGB2BGR565, CV_RGB2GRAY, |
CV_RGB2BGR555, CV_RGB2BGR565, CV_RGB2GRAY, |
||||||
CV_RGB2HLS, CV_RGB2HLS_FULL, CV_RGB2HSV, CV_RGB2HSV_FULL, |
CV_RGB2HLS, CV_RGB2HLS_FULL, CV_RGB2HSV, CV_RGB2HSV_FULL, |
||||||
CV_RGB2Lab, CV_RGB2Luv, CV_RGB2XYZ, CV_RGB2YCrCb, CV_RGB2YUV, |
CV_RGB2Lab, CV_RGB2Luv, CV_RGB2XYZ, CV_RGB2YCrCb, CV_RGB2YUV, |
||||||
|
|
||||||
CV_RGBA2BGR, CV_RGBA2BGR555, CV_RGBA2BGR565, CV_RGBA2GRAY, |
CV_RGBA2BGR, CV_RGBA2BGR555, CV_RGBA2BGR565, CV_RGBA2GRAY, |
||||||
CX_RGBA2HLS, CX_RGBA2HLS_FULL, CX_RGBA2HSV, CX_RGBA2HSV_FULL, |
CX_RGBA2HLS, CX_RGBA2HLS_FULL, CX_RGBA2HSV, CX_RGBA2HSV_FULL, |
||||||
CX_RGBA2Lab, CX_RGBA2Luv, CX_RGBA2XYZ, |
CX_RGBA2Lab, CX_RGBA2Luv, CX_RGBA2XYZ, |
||||||
CX_RGBA2YCrCb, CX_RGBA2YUV, |
CX_RGBA2YCrCb, CX_RGBA2YUV, |
||||||
|
|
||||||
CV_XYZ2BGR, CV_XYZ2RGB, CX_XYZ2BGRA, CX_XYZ2RGBA, |
CV_XYZ2BGR, CV_XYZ2RGB, CX_XYZ2BGRA, CX_XYZ2RGBA, |
||||||
|
|
||||||
CV_YCrCb2BGR, CV_YCrCb2RGB, CX_YCrCb2BGRA, CX_YCrCb2RGBA, |
CV_YCrCb2BGR, CV_YCrCb2RGB, CX_YCrCb2BGRA, CX_YCrCb2RGBA, |
||||||
CV_YUV2BGR, CV_YUV2RGB, CX_YUV2BGRA, CX_YUV2RGBA |
CV_YUV2BGR, CV_YUV2RGB, CX_YUV2BGRA, CX_YUV2RGBA |
||||||
) |
) |
||||||
|
|
||||||
CV_ENUM(CvtMode2, CV_YUV2BGR_NV12, CV_YUV2BGRA_NV12, CV_YUV2RGB_NV12, CV_YUV2RGBA_NV12, CV_YUV2BGR_NV21, CV_YUV2BGRA_NV21, CV_YUV2RGB_NV21, CV_YUV2RGBA_NV21, |
CV_ENUM(CvtMode2, CV_YUV2BGR_NV12, CV_YUV2BGRA_NV12, CV_YUV2RGB_NV12, CV_YUV2RGBA_NV12, CV_YUV2BGR_NV21, CV_YUV2BGRA_NV21, CV_YUV2RGB_NV21, CV_YUV2RGBA_NV21, |
||||||
CV_YUV2BGR_YV12, CV_YUV2BGRA_YV12, CV_YUV2RGB_YV12, CV_YUV2RGBA_YV12, CV_YUV2BGR_IYUV, CV_YUV2BGRA_IYUV, CV_YUV2RGB_IYUV, CV_YUV2RGBA_IYUV, |
CV_YUV2BGR_YV12, CV_YUV2BGRA_YV12, CV_YUV2RGB_YV12, CV_YUV2RGBA_YV12, CV_YUV2BGR_IYUV, CV_YUV2BGRA_IYUV, CV_YUV2RGB_IYUV, CV_YUV2RGBA_IYUV, |
||||||
COLOR_YUV2GRAY_420) |
COLOR_YUV2GRAY_420, CV_YUV2RGB_UYVY, CV_YUV2BGR_UYVY, CV_YUV2RGBA_UYVY, CV_YUV2BGRA_UYVY, CV_YUV2RGB_YUY2, CV_YUV2BGR_YUY2, CV_YUV2RGB_YVYU, |
||||||
|
CV_YUV2BGR_YVYU, CV_YUV2RGBA_YUY2, CV_YUV2BGRA_YUY2, CV_YUV2RGBA_YVYU, CV_YUV2BGRA_YVYU) |
||||||
struct ChPair |
|
||||||
{ |
struct ChPair |
||||||
ChPair(int _scn, int _dcn): scn(_scn), dcn(_dcn) {} |
{ |
||||||
int scn, dcn; |
ChPair(int _scn, int _dcn): scn(_scn), dcn(_dcn) {} |
||||||
}; |
int scn, dcn; |
||||||
|
}; |
||||||
ChPair getConversionInfo(int cvtMode) |
|
||||||
{ |
ChPair getConversionInfo(int cvtMode) |
||||||
switch(cvtMode) |
{ |
||||||
{ |
switch(cvtMode) |
||||||
case CV_BayerBG2GRAY: case CV_BayerGB2GRAY: |
{ |
||||||
case CV_BayerGR2GRAY: case CV_BayerRG2GRAY: |
case CV_BayerBG2GRAY: case CV_BayerGB2GRAY: |
||||||
case CV_YUV2GRAY_420: |
case CV_BayerGR2GRAY: case CV_BayerRG2GRAY: |
||||||
return ChPair(1,1); |
case CV_YUV2GRAY_420: |
||||||
case CV_GRAY2BGR555: case CV_GRAY2BGR565: |
return ChPair(1,1); |
||||||
return ChPair(1,2); |
case CV_GRAY2BGR555: case CV_GRAY2BGR565: |
||||||
case CV_BayerBG2BGR: case CV_BayerBG2BGR_VNG: |
return ChPair(1,2); |
||||||
case CV_BayerGB2BGR: case CV_BayerGB2BGR_VNG: |
case CV_BayerBG2BGR: case CV_BayerBG2BGR_VNG: |
||||||
case CV_BayerGR2BGR: case CV_BayerGR2BGR_VNG: |
case CV_BayerGB2BGR: case CV_BayerGB2BGR_VNG: |
||||||
case CV_BayerRG2BGR: case CV_BayerRG2BGR_VNG: |
case CV_BayerGR2BGR: case CV_BayerGR2BGR_VNG: |
||||||
case CV_GRAY2BGR: |
case CV_BayerRG2BGR: case CV_BayerRG2BGR_VNG: |
||||||
case CV_YUV2BGR_NV12: case CV_YUV2RGB_NV12: |
case CV_GRAY2BGR: |
||||||
case CV_YUV2BGR_NV21: case CV_YUV2RGB_NV21: |
case CV_YUV2BGR_NV12: case CV_YUV2RGB_NV12: |
||||||
case CV_YUV2BGR_YV12: case CV_YUV2RGB_YV12: |
case CV_YUV2BGR_NV21: case CV_YUV2RGB_NV21: |
||||||
case CV_YUV2BGR_IYUV: case CV_YUV2RGB_IYUV: |
case CV_YUV2BGR_YV12: case CV_YUV2RGB_YV12: |
||||||
return ChPair(1,3); |
case CV_YUV2BGR_IYUV: case CV_YUV2RGB_IYUV: |
||||||
case CV_GRAY2BGRA: |
return ChPair(1,3); |
||||||
case CV_YUV2BGRA_NV12: case CV_YUV2RGBA_NV12: |
case CV_GRAY2BGRA: |
||||||
case CV_YUV2BGRA_NV21: case CV_YUV2RGBA_NV21: |
case CV_YUV2BGRA_NV12: case CV_YUV2RGBA_NV12: |
||||||
case CV_YUV2BGRA_YV12: case CV_YUV2RGBA_YV12: |
case CV_YUV2BGRA_NV21: case CV_YUV2RGBA_NV21: |
||||||
case CV_YUV2BGRA_IYUV: case CV_YUV2RGBA_IYUV: |
case CV_YUV2BGRA_YV12: case CV_YUV2RGBA_YV12: |
||||||
return ChPair(1,4); |
case CV_YUV2BGRA_IYUV: case CV_YUV2RGBA_IYUV: |
||||||
case CV_BGR5552GRAY: case CV_BGR5652GRAY: |
return ChPair(1,4); |
||||||
return ChPair(2,1); |
case CV_BGR5552GRAY: case CV_BGR5652GRAY: |
||||||
case CV_BGR5552BGR: case CV_BGR5552RGB: |
return ChPair(2,1); |
||||||
case CV_BGR5652BGR: case CV_BGR5652RGB: |
case CV_BGR5552BGR: case CV_BGR5552RGB: |
||||||
return ChPair(2,3); |
case CV_BGR5652BGR: case CV_BGR5652RGB: |
||||||
case CV_BGR5552BGRA: case CV_BGR5552RGBA: |
case CV_YUV2RGB_UYVY: case CV_YUV2BGR_UYVY: |
||||||
case CV_BGR5652BGRA: case CV_BGR5652RGBA: |
case CV_YUV2RGBA_UYVY: case CV_YUV2BGRA_UYVY: |
||||||
return ChPair(2,4); |
case CV_YUV2RGB_YUY2: case CV_YUV2BGR_YUY2: |
||||||
case CV_BGR2GRAY: case CV_RGB2GRAY: |
case CV_YUV2RGB_YVYU: case CV_YUV2BGR_YVYU: |
||||||
return ChPair(3,1); |
case CV_YUV2RGBA_YUY2: case CV_YUV2BGRA_YUY2: |
||||||
case CV_BGR2BGR555: case CV_BGR2BGR565: |
case CV_YUV2RGBA_YVYU: case CV_YUV2BGRA_YVYU: |
||||||
case CV_RGB2BGR555: case CV_RGB2BGR565: |
return ChPair(2,3); |
||||||
return ChPair(3,2); |
case CV_BGR5552BGRA: case CV_BGR5552RGBA: |
||||||
case CV_BGR2HLS: case CV_BGR2HLS_FULL: |
case CV_BGR5652BGRA: case CV_BGR5652RGBA: |
||||||
case CV_BGR2HSV: case CV_BGR2HSV_FULL: |
return ChPair(2,4); |
||||||
case CV_BGR2Lab: case CV_BGR2Luv: |
case CV_BGR2GRAY: case CV_RGB2GRAY: |
||||||
case CV_BGR2RGB: case CV_BGR2XYZ: |
return ChPair(3,1); |
||||||
case CV_BGR2YCrCb: case CV_BGR2YUV: |
case CV_BGR2BGR555: case CV_BGR2BGR565: |
||||||
case CV_HLS2BGR: case CV_HLS2BGR_FULL: |
case CV_RGB2BGR555: case CV_RGB2BGR565: |
||||||
case CV_HLS2RGB: case CV_HLS2RGB_FULL: |
return ChPair(3,2); |
||||||
case CV_HSV2BGR: case CV_HSV2BGR_FULL: |
case CV_BGR2HLS: case CV_BGR2HLS_FULL: |
||||||
case CV_HSV2RGB: case CV_HSV2RGB_FULL: |
case CV_BGR2HSV: case CV_BGR2HSV_FULL: |
||||||
case CV_Lab2BGR: case CV_Lab2LBGR: |
case CV_BGR2Lab: case CV_BGR2Luv: |
||||||
case CV_Lab2LRGB: case CV_Lab2RGB: |
case CV_BGR2RGB: case CV_BGR2XYZ: |
||||||
case CV_LBGR2Lab: case CV_LBGR2Luv: |
case CV_BGR2YCrCb: case CV_BGR2YUV: |
||||||
case CV_LRGB2Lab: case CV_LRGB2Luv: |
case CV_HLS2BGR: case CV_HLS2BGR_FULL: |
||||||
case CV_Luv2BGR: case CV_Luv2LBGR: |
case CV_HLS2RGB: case CV_HLS2RGB_FULL: |
||||||
case CV_Luv2LRGB: case CV_Luv2RGB: |
case CV_HSV2BGR: case CV_HSV2BGR_FULL: |
||||||
case CV_RGB2HLS: case CV_RGB2HLS_FULL: |
case CV_HSV2RGB: case CV_HSV2RGB_FULL: |
||||||
case CV_RGB2HSV: case CV_RGB2HSV_FULL: |
case CV_Lab2BGR: case CV_Lab2LBGR: |
||||||
case CV_RGB2Lab: case CV_RGB2Luv: |
case CV_Lab2LRGB: case CV_Lab2RGB: |
||||||
case CV_RGB2XYZ: case CV_RGB2YCrCb: |
case CV_LBGR2Lab: case CV_LBGR2Luv: |
||||||
case CV_RGB2YUV: case CV_XYZ2BGR: |
case CV_LRGB2Lab: case CV_LRGB2Luv: |
||||||
case CV_XYZ2RGB: case CV_YCrCb2BGR: |
case CV_Luv2BGR: case CV_Luv2LBGR: |
||||||
case CV_YCrCb2RGB: case CV_YUV2BGR: |
case CV_Luv2LRGB: case CV_Luv2RGB: |
||||||
case CV_YUV2RGB: |
case CV_RGB2HLS: case CV_RGB2HLS_FULL: |
||||||
return ChPair(3,3); |
case CV_RGB2HSV: case CV_RGB2HSV_FULL: |
||||||
case CV_BGR2BGRA: case CV_BGR2RGBA: |
case CV_RGB2Lab: case CV_RGB2Luv: |
||||||
case CX_HLS2BGRA: case CX_HLS2BGRA_FULL: |
case CV_RGB2XYZ: case CV_RGB2YCrCb: |
||||||
case CX_HLS2RGBA: case CX_HLS2RGBA_FULL: |
case CV_RGB2YUV: case CV_XYZ2BGR: |
||||||
case CX_HSV2BGRA: case CX_HSV2BGRA_FULL: |
case CV_XYZ2RGB: case CV_YCrCb2BGR: |
||||||
case CX_HSV2RGBA: case CX_HSV2RGBA_FULL: |
case CV_YCrCb2RGB: case CV_YUV2BGR: |
||||||
case CX_Lab2BGRA: case CX_Lab2LBGRA: |
case CV_YUV2RGB: |
||||||
case CX_Lab2LRGBA: case CX_Lab2RGBA: |
return ChPair(3,3); |
||||||
case CX_Luv2BGRA: case CX_Luv2LBGRA: |
case CV_BGR2BGRA: case CV_BGR2RGBA: |
||||||
case CX_Luv2LRGBA: case CX_Luv2RGBA: |
case CX_HLS2BGRA: case CX_HLS2BGRA_FULL: |
||||||
case CX_XYZ2BGRA: case CX_XYZ2RGBA: |
case CX_HLS2RGBA: case CX_HLS2RGBA_FULL: |
||||||
case CX_YCrCb2BGRA: case CX_YCrCb2RGBA: |
case CX_HSV2BGRA: case CX_HSV2BGRA_FULL: |
||||||
case CX_YUV2BGRA: case CX_YUV2RGBA: |
case CX_HSV2RGBA: case CX_HSV2RGBA_FULL: |
||||||
return ChPair(3,4); |
case CX_Lab2BGRA: case CX_Lab2LBGRA: |
||||||
case CV_BGRA2GRAY: case CV_RGBA2GRAY: |
case CX_Lab2LRGBA: case CX_Lab2RGBA: |
||||||
return ChPair(4,1); |
case CX_Luv2BGRA: case CX_Luv2LBGRA: |
||||||
case CV_BGRA2BGR555: case CV_BGRA2BGR565: |
case CX_Luv2LRGBA: case CX_Luv2RGBA: |
||||||
case CV_RGBA2BGR555: case CV_RGBA2BGR565: |
case CX_XYZ2BGRA: case CX_XYZ2RGBA: |
||||||
return ChPair(4,2); |
case CX_YCrCb2BGRA: case CX_YCrCb2RGBA: |
||||||
case CV_BGRA2BGR: case CX_BGRA2HLS: |
case CX_YUV2BGRA: case CX_YUV2RGBA: |
||||||
case CX_BGRA2HLS_FULL: case CX_BGRA2HSV: |
return ChPair(3,4); |
||||||
case CX_BGRA2HSV_FULL: case CX_BGRA2Lab: |
case CV_BGRA2GRAY: case CV_RGBA2GRAY: |
||||||
case CX_BGRA2Luv: case CX_BGRA2XYZ: |
return ChPair(4,1); |
||||||
case CX_BGRA2YCrCb: case CX_BGRA2YUV: |
case CV_BGRA2BGR555: case CV_BGRA2BGR565: |
||||||
case CX_LBGRA2Lab: case CX_LBGRA2Luv: |
case CV_RGBA2BGR555: case CV_RGBA2BGR565: |
||||||
case CX_LRGBA2Lab: case CX_LRGBA2Luv: |
return ChPair(4,2); |
||||||
case CV_RGBA2BGR: case CX_RGBA2HLS: |
case CV_BGRA2BGR: case CX_BGRA2HLS: |
||||||
case CX_RGBA2HLS_FULL: case CX_RGBA2HSV: |
case CX_BGRA2HLS_FULL: case CX_BGRA2HSV: |
||||||
case CX_RGBA2HSV_FULL: case CX_RGBA2Lab: |
case CX_BGRA2HSV_FULL: case CX_BGRA2Lab: |
||||||
case CX_RGBA2Luv: case CX_RGBA2XYZ: |
case CX_BGRA2Luv: case CX_BGRA2XYZ: |
||||||
case CX_RGBA2YCrCb: case CX_RGBA2YUV: |
case CX_BGRA2YCrCb: case CX_BGRA2YUV: |
||||||
return ChPair(4,3); |
case CX_LBGRA2Lab: case CX_LBGRA2Luv: |
||||||
case CV_BGRA2RGBA: |
case CX_LRGBA2Lab: case CX_LRGBA2Luv: |
||||||
return ChPair(4,4); |
case CV_RGBA2BGR: case CX_RGBA2HLS: |
||||||
default: |
case CX_RGBA2HLS_FULL: case CX_RGBA2HSV: |
||||||
ADD_FAILURE() << "Unknown conversion type"; |
case CX_RGBA2HSV_FULL: case CX_RGBA2Lab: |
||||||
break; |
case CX_RGBA2Luv: case CX_RGBA2XYZ: |
||||||
}; |
case CX_RGBA2YCrCb: case CX_RGBA2YUV: |
||||||
return ChPair(0,0); |
return ChPair(4,3); |
||||||
} |
case CV_BGRA2RGBA: |
||||||
|
return ChPair(4,4); |
||||||
typedef std::tr1::tuple<Size, CvtMode> Size_CvtMode_t; |
default: |
||||||
typedef perf::TestBaseWithParam<Size_CvtMode_t> Size_CvtMode; |
ADD_FAILURE() << "Unknown conversion type"; |
||||||
|
break; |
||||||
PERF_TEST_P(Size_CvtMode, cvtColor8u, |
}; |
||||||
testing::Combine( |
return ChPair(0,0); |
||||||
testing::Values(TYPICAL_MAT_SIZES), |
} |
||||||
testing::ValuesIn(CvtMode::all()) |
|
||||||
) |
typedef std::tr1::tuple<Size, CvtMode> Size_CvtMode_t; |
||||||
) |
typedef perf::TestBaseWithParam<Size_CvtMode_t> Size_CvtMode; |
||||||
{ |
|
||||||
Size sz = get<0>(GetParam()); |
PERF_TEST_P(Size_CvtMode, cvtColor8u, |
||||||
int mode = get<1>(GetParam()); |
testing::Combine( |
||||||
ChPair ch = getConversionInfo(mode); |
testing::Values(TYPICAL_MAT_SIZES), |
||||||
mode %= CV_COLORCVT_MAX; |
testing::ValuesIn(CvtMode::all()) |
||||||
|
) |
||||||
Mat src(sz, CV_8UC(ch.scn)); |
) |
||||||
Mat dst(sz, CV_8UC(ch.dcn)); |
{ |
||||||
|
Size sz = get<0>(GetParam()); |
||||||
declare.in(src, WARMUP_RNG).out(dst); |
int mode = get<1>(GetParam()); |
||||||
|
ChPair ch = getConversionInfo(mode); |
||||||
TEST_CYCLE() cvtColor(src, dst, mode, ch.dcn); |
mode %= CV_COLORCVT_MAX; |
||||||
|
|
||||||
SANITY_CHECK(dst, 1); |
Mat src(sz, CV_8UC(ch.scn)); |
||||||
} |
Mat dst(sz, CV_8UC(ch.dcn)); |
||||||
|
|
||||||
typedef std::tr1::tuple<Size, CvtMode2> Size_CvtMode2_t; |
declare.in(src, WARMUP_RNG).out(dst); |
||||||
typedef perf::TestBaseWithParam<Size_CvtMode2_t> Size_CvtMode2; |
|
||||||
|
TEST_CYCLE() cvtColor(src, dst, mode, ch.dcn); |
||||||
PERF_TEST_P(Size_CvtMode2, cvtColorYUV420, |
|
||||||
testing::Combine( |
SANITY_CHECK(dst, 1); |
||||||
testing::Values(szVGA, sz720p, sz1080p, Size(130, 60)), |
} |
||||||
testing::ValuesIn(CvtMode2::all()) |
|
||||||
) |
typedef std::tr1::tuple<Size, CvtMode2> Size_CvtMode2_t; |
||||||
) |
typedef perf::TestBaseWithParam<Size_CvtMode2_t> Size_CvtMode2; |
||||||
{ |
|
||||||
Size sz = get<0>(GetParam()); |
PERF_TEST_P(Size_CvtMode2, cvtColorYUV420, |
||||||
int mode = get<1>(GetParam()); |
testing::Combine( |
||||||
ChPair ch = getConversionInfo(mode); |
testing::Values(szVGA, sz720p, sz1080p, Size(130, 60)), |
||||||
|
testing::ValuesIn(CvtMode2::all()) |
||||||
Mat src(sz.height + sz.height / 2, sz.width, CV_8UC(ch.scn)); |
) |
||||||
Mat dst(sz, CV_8UC(ch.dcn)); |
) |
||||||
|
{ |
||||||
declare.in(src, WARMUP_RNG).out(dst); |
Size sz = get<0>(GetParam()); |
||||||
|
int mode = get<1>(GetParam()); |
||||||
TEST_CYCLE() cvtColor(src, dst, mode, ch.dcn); |
ChPair ch = getConversionInfo(mode); |
||||||
|
|
||||||
SANITY_CHECK(dst, 1); |
Mat src(sz.height + sz.height / 2, sz.width, CV_8UC(ch.scn)); |
||||||
} |
Mat dst(sz, CV_8UC(ch.dcn)); |
||||||
|
|
||||||
|
declare.in(src, WARMUP_RNG).out(dst); |
||||||
|
|
||||||
|
TEST_CYCLE() cvtColor(src, dst, mode, ch.dcn); |
||||||
|
|
||||||
|
SANITY_CHECK(dst, 1); |
||||||
|
} |
||||||
|
@ -1,168 +1,168 @@ |
|||||||
#include "perf_precomp.hpp" |
#include "perf_precomp.hpp" |
||||||
|
|
||||||
using namespace std; |
using namespace std; |
||||||
using namespace cv; |
using namespace cv; |
||||||
using namespace perf; |
using namespace perf; |
||||||
using namespace testing; |
using namespace testing; |
||||||
using std::tr1::make_tuple; |
using std::tr1::make_tuple; |
||||||
using std::tr1::get; |
using std::tr1::get; |
||||||
|
|
||||||
enum{HALF_SIZE=0, UPSIDE_DOWN, REFLECTION_X, REFLECTION_BOTH}; |
enum{HALF_SIZE=0, UPSIDE_DOWN, REFLECTION_X, REFLECTION_BOTH}; |
||||||
|
|
||||||
CV_ENUM(BorderMode, BORDER_CONSTANT, BORDER_REPLICATE); |
CV_ENUM(BorderMode, BORDER_CONSTANT, BORDER_REPLICATE); |
||||||
CV_ENUM(InterType, INTER_NEAREST, INTER_LINEAR); |
CV_ENUM(InterType, INTER_NEAREST, INTER_LINEAR); |
||||||
CV_ENUM(RemapMode, HALF_SIZE, UPSIDE_DOWN, REFLECTION_X, REFLECTION_BOTH); |
CV_ENUM(RemapMode, HALF_SIZE, UPSIDE_DOWN, REFLECTION_X, REFLECTION_BOTH); |
||||||
|
|
||||||
typedef TestBaseWithParam< tr1::tuple<Size, InterType, BorderMode> > TestWarpAffine; |
typedef TestBaseWithParam< tr1::tuple<Size, InterType, BorderMode> > TestWarpAffine; |
||||||
typedef TestBaseWithParam< tr1::tuple<Size, InterType, BorderMode> > TestWarpPerspective; |
typedef TestBaseWithParam< tr1::tuple<Size, InterType, BorderMode> > TestWarpPerspective; |
||||||
typedef TestBaseWithParam< tr1::tuple<MatType, Size, InterType, BorderMode, RemapMode> > TestRemap; |
typedef TestBaseWithParam< tr1::tuple<MatType, Size, InterType, BorderMode, RemapMode> > TestRemap; |
||||||
|
|
||||||
void update_map(const Mat& src, Mat& map_x, Mat& map_y, const int remapMode ); |
void update_map(const Mat& src, Mat& map_x, Mat& map_y, const int remapMode ); |
||||||
|
|
||||||
PERF_TEST_P( TestWarpAffine, WarpAffine, |
PERF_TEST_P( TestWarpAffine, WarpAffine, |
||||||
Combine( |
Combine( |
||||||
Values( szVGA, sz720p, sz1080p ), |
Values( szVGA, sz720p, sz1080p ), |
||||||
ValuesIn( InterType::all() ), |
ValuesIn( InterType::all() ), |
||||||
ValuesIn( BorderMode::all() ) |
ValuesIn( BorderMode::all() ) |
||||||
) |
) |
||||||
) |
) |
||||||
{ |
{ |
||||||
Size sz; |
Size sz; |
||||||
int borderMode, interType; |
int borderMode, interType; |
||||||
sz = get<0>(GetParam()); |
sz = get<0>(GetParam()); |
||||||
borderMode = get<1>(GetParam()); |
borderMode = get<1>(GetParam()); |
||||||
interType = get<2>(GetParam()); |
interType = get<2>(GetParam()); |
||||||
|
|
||||||
Mat src, img = imread(getDataPath("cv/shared/fruits.jpg")); |
Mat src, img = imread(getDataPath("cv/shared/fruits.jpg")); |
||||||
cvtColor(img, src, COLOR_BGR2RGBA, 4); |
cvtColor(img, src, COLOR_BGR2RGBA, 4); |
||||||
Mat warpMat = getRotationMatrix2D(Point2f(src.cols/2.f, src.rows/2.f), 30., 2.2); |
Mat warpMat = getRotationMatrix2D(Point2f(src.cols/2.f, src.rows/2.f), 30., 2.2); |
||||||
Mat dst(sz, CV_8UC4); |
Mat dst(sz, CV_8UC4); |
||||||
|
|
||||||
declare.in(src).out(dst); |
declare.in(src).out(dst); |
||||||
|
|
||||||
TEST_CYCLE() warpAffine( src, dst, warpMat, sz, interType, borderMode, Scalar::all(150) ); |
TEST_CYCLE() warpAffine( src, dst, warpMat, sz, interType, borderMode, Scalar::all(150) ); |
||||||
|
|
||||||
SANITY_CHECK(dst); |
SANITY_CHECK(dst); |
||||||
|
|
||||||
} |
} |
||||||
|
|
||||||
PERF_TEST_P( TestWarpPerspective, WarpPerspective, |
PERF_TEST_P( TestWarpPerspective, WarpPerspective, |
||||||
Combine( |
Combine( |
||||||
Values( szVGA, sz720p, sz1080p ), |
Values( szVGA, sz720p, sz1080p ), |
||||||
ValuesIn( InterType::all() ), |
ValuesIn( InterType::all() ), |
||||||
ValuesIn( BorderMode::all() ) |
ValuesIn( BorderMode::all() ) |
||||||
) |
) |
||||||
) |
) |
||||||
{ |
{ |
||||||
Size sz; |
Size sz; |
||||||
int borderMode, interType; |
int borderMode, interType; |
||||||
sz = get<0>(GetParam()); |
sz = get<0>(GetParam()); |
||||||
borderMode = get<1>(GetParam()); |
borderMode = get<1>(GetParam()); |
||||||
interType = get<2>(GetParam()); |
interType = get<2>(GetParam()); |
||||||
|
|
||||||
|
|
||||||
Mat src, img = imread(getDataPath("cv/shared/fruits.jpg")); |
Mat src, img = imread(getDataPath("cv/shared/fruits.jpg")); |
||||||
cvtColor(img, src, COLOR_BGR2RGBA, 4); |
cvtColor(img, src, COLOR_BGR2RGBA, 4); |
||||||
Mat rotMat = getRotationMatrix2D(Point2f(src.cols/2.f, src.rows/2.f), 30., 2.2); |
Mat rotMat = getRotationMatrix2D(Point2f(src.cols/2.f, src.rows/2.f), 30., 2.2); |
||||||
Mat warpMat(3, 3, CV_64FC1); |
Mat warpMat(3, 3, CV_64FC1); |
||||||
for(int r=0; r<2; r++) |
for(int r=0; r<2; r++) |
||||||
for(int c=0; c<3; c++) |
for(int c=0; c<3; c++) |
||||||
warpMat.at<double>(r, c) = rotMat.at<double>(r, c); |
warpMat.at<double>(r, c) = rotMat.at<double>(r, c); |
||||||
warpMat.at<double>(2, 0) = .3/sz.width; |
warpMat.at<double>(2, 0) = .3/sz.width; |
||||||
warpMat.at<double>(2, 1) = .3/sz.height; |
warpMat.at<double>(2, 1) = .3/sz.height; |
||||||
warpMat.at<double>(2, 2) = 1; |
warpMat.at<double>(2, 2) = 1; |
||||||
Mat dst(sz, CV_8UC4); |
Mat dst(sz, CV_8UC4); |
||||||
|
|
||||||
declare.in(src).out(dst); |
declare.in(src).out(dst); |
||||||
|
|
||||||
TEST_CYCLE() warpPerspective( src, dst, warpMat, sz, interType, borderMode, Scalar::all(150) ); |
TEST_CYCLE() warpPerspective( src, dst, warpMat, sz, interType, borderMode, Scalar::all(150) ); |
||||||
|
|
||||||
SANITY_CHECK(dst); |
SANITY_CHECK(dst); |
||||||
} |
} |
||||||
|
|
||||||
PERF_TEST_P( TestRemap, remap, |
PERF_TEST_P( TestRemap, remap, |
||||||
Combine( |
Combine( |
||||||
Values( TYPICAL_MAT_TYPES ), |
Values( TYPICAL_MAT_TYPES ), |
||||||
Values( szVGA, sz720p, sz1080p ), |
Values( szVGA, sz720p, sz1080p ), |
||||||
ValuesIn( InterType::all() ), |
ValuesIn( InterType::all() ), |
||||||
ValuesIn( BorderMode::all() ), |
ValuesIn( BorderMode::all() ), |
||||||
ValuesIn( RemapMode::all() ) |
ValuesIn( RemapMode::all() ) |
||||||
) |
) |
||||||
) |
) |
||||||
{ |
{ |
||||||
int type = get<0>(GetParam()); |
int type = get<0>(GetParam()); |
||||||
Size size = get<1>(GetParam()); |
Size size = get<1>(GetParam()); |
||||||
int interpolationType = get<2>(GetParam()); |
int interpolationType = get<2>(GetParam()); |
||||||
int borderMode = get<3>(GetParam()); |
int borderMode = get<3>(GetParam()); |
||||||
int remapMode = get<4>(GetParam()); |
int remapMode = get<4>(GetParam()); |
||||||
unsigned int height = size.height; |
unsigned int height = size.height; |
||||||
unsigned int width = size.width; |
unsigned int width = size.width; |
||||||
Mat source(height, width, type); |
Mat source(height, width, type); |
||||||
Mat destination; |
Mat destination; |
||||||
Mat map_x(height, width, CV_32F); |
Mat map_x(height, width, CV_32F); |
||||||
Mat map_y(height, width, CV_32F); |
Mat map_y(height, width, CV_32F); |
||||||
|
|
||||||
declare.in(source, WARMUP_RNG); |
declare.in(source, WARMUP_RNG); |
||||||
|
|
||||||
update_map(source, map_x, map_y, remapMode); |
update_map(source, map_x, map_y, remapMode); |
||||||
|
|
||||||
TEST_CYCLE() |
TEST_CYCLE() |
||||||
{ |
{ |
||||||
remap(source, destination, map_x, map_y, interpolationType, borderMode); |
remap(source, destination, map_x, map_y, interpolationType, borderMode); |
||||||
} |
} |
||||||
|
|
||||||
SANITY_CHECK(destination, 1); |
SANITY_CHECK(destination, 1); |
||||||
} |
} |
||||||
|
|
||||||
void update_map(const Mat& src, Mat& map_x, Mat& map_y, const int remapMode ) |
void update_map(const Mat& src, Mat& map_x, Mat& map_y, const int remapMode ) |
||||||
{ |
{ |
||||||
for( int j = 0; j < src.rows; j++ ) |
for( int j = 0; j < src.rows; j++ ) |
||||||
{ |
{ |
||||||
for( int i = 0; i < src.cols; i++ ) |
for( int i = 0; i < src.cols; i++ ) |
||||||
{ |
{ |
||||||
switch( remapMode ) |
switch( remapMode ) |
||||||
{ |
{ |
||||||
case HALF_SIZE: |
case HALF_SIZE: |
||||||
if( i > src.cols*0.25 && i < src.cols*0.75 && j > src.rows*0.25 && j < src.rows*0.75 ) |
if( i > src.cols*0.25 && i < src.cols*0.75 && j > src.rows*0.25 && j < src.rows*0.75 ) |
||||||
{ |
{ |
||||||
map_x.at<float>(j,i) = 2*( i - src.cols*0.25 ) + 0.5 ; |
map_x.at<float>(j,i) = 2*( i - src.cols*0.25 ) + 0.5 ; |
||||||
map_y.at<float>(j,i) = 2*( j - src.rows*0.25 ) + 0.5 ; |
map_y.at<float>(j,i) = 2*( j - src.rows*0.25 ) + 0.5 ; |
||||||
} |
} |
||||||
else |
else |
||||||
{ |
{ |
||||||
map_x.at<float>(j,i) = 0 ; |
map_x.at<float>(j,i) = 0 ; |
||||||
map_y.at<float>(j,i) = 0 ; |
map_y.at<float>(j,i) = 0 ; |
||||||
} |
} |
||||||
break; |
break; |
||||||
case UPSIDE_DOWN: |
case UPSIDE_DOWN: |
||||||
map_x.at<float>(j,i) = i ; |
map_x.at<float>(j,i) = i ; |
||||||
map_y.at<float>(j,i) = src.rows - j ; |
map_y.at<float>(j,i) = src.rows - j ; |
||||||
break; |
break; |
||||||
case REFLECTION_X: |
case REFLECTION_X: |
||||||
map_x.at<float>(j,i) = src.cols - i ; |
map_x.at<float>(j,i) = src.cols - i ; |
||||||
map_y.at<float>(j,i) = j ; |
map_y.at<float>(j,i) = j ; |
||||||
break; |
break; |
||||||
case REFLECTION_BOTH: |
case REFLECTION_BOTH: |
||||||
map_x.at<float>(j,i) = src.cols - i ; |
map_x.at<float>(j,i) = src.cols - i ; |
||||||
map_y.at<float>(j,i) = src.rows - j ; |
map_y.at<float>(j,i) = src.rows - j ; |
||||||
break; |
break; |
||||||
} // end of switch
|
} // end of switch
|
||||||
} |
} |
||||||
} |
} |
||||||
} |
} |
||||||
|
|
||||||
PERF_TEST(Transform, getPerspectiveTransform) |
PERF_TEST(Transform, getPerspectiveTransform) |
||||||
{ |
{ |
||||||
unsigned int size = 8; |
unsigned int size = 8; |
||||||
Mat source(1, size/2, CV_32FC2); |
Mat source(1, size/2, CV_32FC2); |
||||||
Mat destination(1, size/2, CV_32FC2); |
Mat destination(1, size/2, CV_32FC2); |
||||||
Mat transformCoefficient; |
Mat transformCoefficient; |
||||||
|
|
||||||
declare.in(source, destination, WARMUP_RNG); |
declare.in(source, destination, WARMUP_RNG); |
||||||
|
|
||||||
TEST_CYCLE() |
TEST_CYCLE() |
||||||
{ |
{ |
||||||
transformCoefficient = getPerspectiveTransform(source, destination); |
transformCoefficient = getPerspectiveTransform(source, destination); |
||||||
} |
} |
||||||
} |
} |
||||||
|
|
||||||
|
Loading…
Reference in new issue