Fixed valgrind warnings in accessors tests

pull/19802/head
Ruslan Garnov 4 years ago
parent 35eaacd1db
commit b5339cc01b
  1. 207
      modules/gapi/test/streaming/gapi_streaming_tests.cpp

@ -1838,6 +1838,14 @@ namespace {
BGR, BGR,
NV12 NV12
}; };
std::ostream& operator<<(std::ostream& os, TestSourceType a) {
os << "Source:";
switch (a) {
case TestSourceType::BGR: return os << "BGR";
case TestSourceType::NV12: return os << "NV12";
default: CV_Assert(false && "unknown TestSourceType");
}
}
cv::gapi::wip::IStreamSource::Ptr createTestSource(TestSourceType sourceType, cv::gapi::wip::IStreamSource::Ptr createTestSource(TestSourceType sourceType,
const std::string& pipeline) { const std::string& pipeline) {
@ -1874,24 +1882,80 @@ namespace {
return ptr; return ptr;
} }
enum class TestAccessType {
BGR,
Y,
UV
};
std::ostream& operator<<(std::ostream& os, TestAccessType a) {
os << "Accessor:";
switch (a) {
case TestAccessType::BGR: return os << "BGR";
case TestAccessType::Y: return os << "Y";
case TestAccessType::UV: return os << "UV";
default: CV_Assert(false && "unknown TestAccessType");
}
}
using GapiFunction = std::function<cv::GMat(const cv::GFrame&)>;
static std::map<TestAccessType, GapiFunction> gapi_functions = {
{ TestAccessType::BGR, cv::gapi::streaming::BGR },
{ TestAccessType::Y, cv::gapi::streaming::Y },
{ TestAccessType::UV, cv::gapi::streaming::UV }
};
using RefFunction = std::function<cv::Mat(const cv::Mat&)>;
static std::map<std::pair<TestSourceType,TestAccessType>, RefFunction> ref_functions = {
{ std::make_pair(TestSourceType::BGR, TestAccessType::BGR),
[](const cv::Mat& bgr) { return bgr; } },
{ std::make_pair(TestSourceType::BGR, TestAccessType::Y),
[](const cv::Mat& bgr) {
cv::Mat y, uv;
cvtBGR2NV12(bgr, y, uv);
return y;
} },
{ std::make_pair(TestSourceType::BGR, TestAccessType::UV),
[](const cv::Mat& bgr) {
cv::Mat y, uv;
cvtBGR2NV12(bgr, y, uv);
return uv;
} },
{ std::make_pair(TestSourceType::NV12, TestAccessType::BGR),
[](const cv::Mat& bgr) {
cv::Mat y, uv, out_bgr;
cvtBGR2NV12(bgr, y, uv);
cv::cvtColorTwoPlane(y, uv, out_bgr,
cv::COLOR_YUV2BGR_NV12);
return out_bgr;
} },
{ std::make_pair(TestSourceType::NV12, TestAccessType::Y),
[](const cv::Mat& bgr) {
cv::Mat y, uv;
cvtBGR2NV12(bgr, y, uv);
return y;
} },
{ std::make_pair(TestSourceType::NV12, TestAccessType::UV),
[](const cv::Mat& bgr) {
cv::Mat y, uv;
cvtBGR2NV12(bgr, y, uv);
return uv;
} },
};
} // anonymous namespace } // anonymous namespace
struct GAPI_Accessors_In_Streaming : public TestWithParam< struct GAPI_Accessors_In_Streaming : public TestWithParam<
std::tuple<std::string, std::tuple<std::string,TestSourceType,TestAccessType>>
std::function<cv::GMat(const cv::GFrame&)>,
TestSourceType,
std::function<cv::Mat(const cv::Mat&)>>
>
{ }; { };
TEST_P(GAPI_Accessors_In_Streaming, AccuracyTest) TEST_P(GAPI_Accessors_In_Streaming, AccuracyTest)
{ {
std::string filepath; std::string filepath{};
std::function<cv::GMat(const cv::GFrame&)> accessor;
TestSourceType sourceType = TestSourceType::BGR; TestSourceType sourceType = TestSourceType::BGR;
std::function<cv::Mat(const cv::Mat&)> fromBGR; TestAccessType accessType = TestAccessType::BGR;
std::tie(filepath, sourceType, accessType) = GetParam();
std::tie(filepath, accessor, sourceType, fromBGR) = GetParam(); auto accessor = gapi_functions[accessType];
auto fromBGR = ref_functions[std::make_pair(sourceType, accessType)];
initTestDataPathOrSkip(); initTestDataPathOrSkip();
const std::string& absFilePath = findDataFile(filepath, false); const std::string& absFilePath = findDataFile(filepath, false);
@ -1926,97 +1990,24 @@ TEST_P(GAPI_Accessors_In_Streaming, AccuracyTest)
cc.stop(); cc.stop();
} }
INSTANTIATE_TEST_CASE_P(AccessBGRFromBGRFrame, GAPI_Accessors_In_Streaming, INSTANTIATE_TEST_CASE_P(TestAccessor, GAPI_Accessors_In_Streaming,
Combine(Values("cv/video/768x576.avi"), Combine(Values("cv/video/768x576.avi"),
Values(cv::gapi::streaming::BGR), Values(TestSourceType::BGR, TestSourceType::NV12),
Values(TestSourceType::BGR), Values(TestAccessType::BGR, TestAccessType::Y, TestAccessType::UV)
Values([](const cv::Mat& bgr){ return bgr; }) ));
)
);
INSTANTIATE_TEST_CASE_P(AccessBGRFromNV12Frame, GAPI_Accessors_In_Streaming,
Combine(Values("cv/video/768x576.avi"),
Values(cv::gapi::streaming::BGR),
Values(TestSourceType::NV12),
Values([](const cv::Mat& bgr)
{
cv::Mat y, uv, out_bgr;
cvtBGR2NV12(bgr, y, uv);
cv::cvtColorTwoPlane(y, uv, out_bgr,
cv::COLOR_YUV2BGR_NV12);
return out_bgr;
})
)
);
INSTANTIATE_TEST_CASE_P(AccessYFromNV12Frame, GAPI_Accessors_In_Streaming,
Combine(Values("cv/video/768x576.avi"),
Values(cv::gapi::streaming::Y),
Values(TestSourceType::NV12),
Values([](const cv::Mat& bgr)
{
cv::Mat y, uv;
cvtBGR2NV12(bgr, y, uv);
return y;
})
)
);
INSTANTIATE_TEST_CASE_P(AccessYFromBGRFrame, GAPI_Accessors_In_Streaming,
Combine(Values("cv/video/768x576.avi"),
Values(cv::gapi::streaming::Y),
Values(TestSourceType::BGR),
Values([](const cv::Mat& bgr)
{
cv::Mat y, uv;
cvtBGR2NV12(bgr, y, uv);
return y;
})
)
);
INSTANTIATE_TEST_CASE_P(AccessUVFromNV12Frame, GAPI_Accessors_In_Streaming,
Combine(Values("cv/video/768x576.avi"),
Values(cv::gapi::streaming::UV),
Values(TestSourceType::NV12),
Values([](const cv::Mat& bgr)
{
cv::Mat y, uv;
cvtBGR2NV12(bgr, y, uv);
return uv;
})
)
);
INSTANTIATE_TEST_CASE_P(AccessUVFromBGRFrame, GAPI_Accessors_In_Streaming,
Combine(Values("cv/video/768x576.avi"),
Values(cv::gapi::streaming::UV),
Values(TestSourceType::BGR),
Values([](const cv::Mat& bgr)
{
cv::Mat y, uv;
cvtBGR2NV12(bgr, y, uv);
return uv;
})
)
);
struct GAPI_Accessors_Meta_In_Streaming : public TestWithParam< struct GAPI_Accessors_Meta_In_Streaming : public TestWithParam<
std::tuple<std::string, std::tuple<std::string,TestSourceType,TestAccessType>>
std::function<cv::GMat(const cv::GFrame&)>,
TestSourceType,
std::function<cv::Mat(const cv::Mat&)>>
>
{ }; { };
TEST_P(GAPI_Accessors_Meta_In_Streaming, AccuracyTest) TEST_P(GAPI_Accessors_Meta_In_Streaming, AccuracyTest)
{ {
std::string filepath; std::string filepath{};
std::function<cv::GMat(const cv::GFrame&)> accessor;
TestSourceType sourceType = TestSourceType::BGR; TestSourceType sourceType = TestSourceType::BGR;
std::function<cv::Mat(const cv::Mat&)> fromBGR; TestAccessType accessType = TestAccessType::BGR;
std::tie(filepath, sourceType, accessType) = GetParam();
std::tie(filepath, accessor, sourceType, fromBGR) = GetParam(); auto accessor = gapi_functions[accessType];
auto fromBGR = ref_functions[std::make_pair(sourceType, accessType)];
initTestDataPathOrSkip(); initTestDataPathOrSkip();
const std::string& absFilePath = findDataFile(filepath, false); const std::string& absFilePath = findDataFile(filepath, false);
@ -2072,37 +2063,21 @@ TEST_P(GAPI_Accessors_Meta_In_Streaming, AccuracyTest)
INSTANTIATE_TEST_CASE_P(BGRAccessorMeta, GAPI_Accessors_Meta_In_Streaming, INSTANTIATE_TEST_CASE_P(BGRAccessorMeta, GAPI_Accessors_Meta_In_Streaming,
Combine(Values("cv/video/768x576.avi"), Combine(Values("cv/video/768x576.avi"),
Values(cv::gapi::streaming::BGR), Values(TestSourceType::NV12),
Values(TestSourceType::BGR), Values(TestAccessType::Y)
Values([](const cv::Mat& bgr) { return bgr; }) ));
)
);
INSTANTIATE_TEST_CASE_P(YAccessorMeta, GAPI_Accessors_Meta_In_Streaming, INSTANTIATE_TEST_CASE_P(YAccessorMeta, GAPI_Accessors_Meta_In_Streaming,
Combine(Values("cv/video/768x576.avi"), Combine(Values("cv/video/768x576.avi"),
Values(cv::gapi::streaming::Y),
Values(TestSourceType::NV12), Values(TestSourceType::NV12),
Values([](const cv::Mat& bgr) Values(TestAccessType::Y)
{ ));
cv::Mat y, uv;
cvtBGR2NV12(bgr, y, uv);
return y;
})
)
);
INSTANTIATE_TEST_CASE_P(UVAccessorMeta, GAPI_Accessors_Meta_In_Streaming, INSTANTIATE_TEST_CASE_P(UVAccessorMeta, GAPI_Accessors_Meta_In_Streaming,
Combine(Values("cv/video/768x576.avi"), Combine(Values("cv/video/768x576.avi"),
Values(cv::gapi::streaming::UV),
Values(TestSourceType::NV12), Values(TestSourceType::NV12),
Values([](const cv::Mat& bgr) Values(TestAccessType::UV)
{ ));
cv::Mat y, uv;
cvtBGR2NV12(bgr, y, uv);
return uv;
})
)
);
TEST(GAPI_Streaming, TestPythonAPI) TEST(GAPI_Streaming, TestPythonAPI)
{ {

Loading…
Cancel
Save