mirror of
https://github.com/opencv/opencv.git
synced 2026-07-31 00:03:03 +04:00
Merge branch '2.4'
This commit is contained in:
@@ -15,6 +15,7 @@ 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> > TestWarpPerspective;
|
||||
typedef TestBaseWithParam< tr1::tuple<Size, InterType, BorderMode, MatType> > TestWarpPerspectiveNear_t;
|
||||
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 );
|
||||
@@ -80,44 +81,59 @@ PERF_TEST_P( TestWarpPerspective, WarpPerspective,
|
||||
SANITY_CHECK(dst);
|
||||
}
|
||||
|
||||
PERF_TEST_P( TestWarpPerspective, WarpPerspectiveLarge,
|
||||
PERF_TEST_P( TestWarpPerspectiveNear_t, WarpPerspectiveNear,
|
||||
Combine(
|
||||
Values( sz3MP, sz5MP ),
|
||||
ValuesIn( InterType::all() ),
|
||||
ValuesIn( BorderMode::all() )
|
||||
Values( Size(176,144), Size(320,240), Size(352,288), Size(480,480),
|
||||
Size(640,480), Size(704,576), Size(720,408), Size(720,480),
|
||||
Size(720,576), Size(768,432), Size(800,448), Size(960,720),
|
||||
Size(1024,768), Size(1280,720), Size(1280,960), Size(1360,720),
|
||||
Size(1600,1200), Size(1920,1080), Size(2048,1536), Size(2592,1920),
|
||||
Size(2592,1944), Size(3264,2448), Size(4096,3072), Size(4208,3120) ),
|
||||
ValuesIn( InterType::all() ),
|
||||
ValuesIn( BorderMode::all() ),
|
||||
Values( CV_8UC1, CV_8UC4 )
|
||||
)
|
||||
)
|
||||
)
|
||||
{
|
||||
Size sz;
|
||||
int borderMode, interType;
|
||||
sz = get<0>(GetParam());
|
||||
Size size;
|
||||
int borderMode, interType, type;
|
||||
size = get<0>(GetParam());
|
||||
borderMode = get<1>(GetParam());
|
||||
interType = get<2>(GetParam());
|
||||
type = get<3>(GetParam());
|
||||
|
||||
string resolution;
|
||||
if (sz == sz3MP)
|
||||
resolution = "3MP";
|
||||
else if (sz == sz5MP)
|
||||
resolution = "5MP";
|
||||
Mat src, img = imread(getDataPath("cv/shared/5MP.png"));
|
||||
|
||||
if( type == CV_8UC1 )
|
||||
{
|
||||
cvtColor(img, src, COLOR_BGR2GRAY, 1);
|
||||
}
|
||||
else if( type == CV_8UC4 )
|
||||
{
|
||||
cvtColor(img, src, COLOR_BGR2BGRA, 4);
|
||||
}
|
||||
else
|
||||
{
|
||||
FAIL();
|
||||
}
|
||||
|
||||
Mat src, img = imread(getDataPath("cv/shared/" + resolution + ".png"));
|
||||
cvtColor(img, src, COLOR_BGR2BGRA, 4);
|
||||
resize(src, src, size);
|
||||
|
||||
int shift = 103;
|
||||
Mat srcVertices = (Mat_<Vec2f>(1, 4) << Vec2f(0, 0), Vec2f(sz.width-1, 0),
|
||||
Vec2f(sz.width-1, sz.height-1), Vec2f(0, sz.height-1));
|
||||
Mat dstVertices = (Mat_<Vec2f>(1, 4) << Vec2f(0, shift), Vec2f(sz.width-shift/2, 0),
|
||||
Vec2f(sz.width-shift, sz.height-shift), Vec2f(shift/2, sz.height-1));
|
||||
int shift = src.cols*0.04;
|
||||
Mat srcVertices = (Mat_<Vec2f>(1, 4) << Vec2f(0, 0), Vec2f(size.width-1, 0),
|
||||
Vec2f(size.width-1, size.height-1), Vec2f(0, size.height-1));
|
||||
Mat dstVertices = (Mat_<Vec2f>(1, 4) << Vec2f(0, shift), Vec2f(size.width-shift/2, 0),
|
||||
Vec2f(size.width-shift, size.height-shift), Vec2f(shift/2, size.height-1));
|
||||
Mat warpMat = getPerspectiveTransform(srcVertices, dstVertices);
|
||||
|
||||
Mat dst(sz, CV_8UC4);
|
||||
Mat dst(size, type);
|
||||
|
||||
declare.in(src).out(dst);
|
||||
|
||||
TEST_CYCLE()
|
||||
warpPerspective( src, dst, warpMat, sz, interType, borderMode, Scalar::all(150) );
|
||||
{
|
||||
warpPerspective( src, dst, warpMat, size, interType, borderMode, Scalar::all(150) );
|
||||
}
|
||||
|
||||
SANITY_CHECK(dst);
|
||||
}
|
||||
|
||||
@@ -1387,8 +1387,8 @@ struct RGB2Lab_f
|
||||
C6 = coeffs[6], C7 = coeffs[7], C8 = coeffs[8];
|
||||
n *= 3;
|
||||
|
||||
static const float _1_3 = 1.0 / 3.0;
|
||||
static const double _a = 16.0 / 116;
|
||||
static const float _1_3 = 1.0f / 3.0f;
|
||||
static const float _a = 16.0f / 116.0f;
|
||||
for (i = 0; i < n; i += 3, src += scn )
|
||||
{
|
||||
float R = clip(src[0]);
|
||||
@@ -1409,11 +1409,11 @@ struct RGB2Lab_f
|
||||
float Y = R*C3 + G*C4 + B*C5;
|
||||
float Z = R*C6 + G*C7 + B*C8;
|
||||
|
||||
float FX = X > 0.008856 ? pow(X, _1_3) : (7.787f * X + _a);
|
||||
float FY = Y > 0.008856 ? pow(Y, _1_3) : (7.787f * Y + _a);
|
||||
float FZ = Z > 0.008856 ? pow(Z, _1_3) : (7.787f * Z + _a);
|
||||
float FX = X > 0.008856f ? pow(X, _1_3) : (7.787f * X + _a);
|
||||
float FY = Y > 0.008856f ? pow(Y, _1_3) : (7.787f * Y + _a);
|
||||
float FZ = Z > 0.008856f ? pow(Z, _1_3) : (7.787f * Z + _a);
|
||||
|
||||
float L = Y > 0.008856 ? (116.f * FY - 16.f) : (903.3 * Y);
|
||||
float L = Y > 0.008856f ? (116.f * FY - 16.f) : (903.3f * Y);
|
||||
float a = 500.f * (FX - FY);
|
||||
float b = 200.f * (FY - FZ);
|
||||
|
||||
|
||||
@@ -220,7 +220,7 @@ static const void* initInterTab2D( int method, bool fixpt )
|
||||
return fixpt ? (const void*)itab : (const void*)tab;
|
||||
}
|
||||
|
||||
|
||||
#ifndef __MINGW32__
|
||||
static bool initAllInterTab2D()
|
||||
{
|
||||
return initInterTab2D( INTER_LINEAR, false ) &&
|
||||
@@ -232,6 +232,7 @@ static bool initAllInterTab2D()
|
||||
}
|
||||
|
||||
static volatile bool doInitAllInterTab2D = initAllInterTab2D();
|
||||
#endif
|
||||
|
||||
template<typename ST, typename DT> struct Cast
|
||||
{
|
||||
|
||||
Reference in New Issue
Block a user