mirror of
https://github.com/opencv/opencv.git
synced 2025-08-06 14:36:36 +08:00
Fixed valgrind warnings in accessors tests
This commit is contained in:
parent
35eaacd1db
commit
b5339cc01b
@ -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…
Reference in New Issue
Block a user