mirror of
https://github.com/opencv/opencv.git
synced 2025-06-12 20:42:53 +08:00
Fix fluid resize operating with zero output size
This commit is contained in:
parent
c722625f28
commit
3e3d4ad797
@ -392,10 +392,10 @@ namespace core {
|
|||||||
}
|
}
|
||||||
else
|
else
|
||||||
{
|
{
|
||||||
GAPI_Assert(fx != 0. && fy != 0.);
|
int outSz_w = static_cast<int>(round(in.size.width * fx));
|
||||||
return in.withSize
|
int outSz_h = static_cast<int>(round(in.size.height * fy));
|
||||||
(Size(static_cast<int>(round(in.size.width * fx)),
|
GAPI_Assert(outSz_w > 0 && outSz_h > 0);
|
||||||
static_cast<int>(round(in.size.height * fy))));
|
return in.withSize(Size(outSz_w, outSz_h));
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
};
|
};
|
||||||
|
@ -2030,10 +2030,16 @@ GAPI_FLUID_KERNEL(GFluidResize, cv::gapi::core::GResize, true)
|
|||||||
}
|
}
|
||||||
|
|
||||||
static void initScratch(const cv::GMatDesc& in,
|
static void initScratch(const cv::GMatDesc& in,
|
||||||
cv::Size outSz, double /*fx*/, double /*fy*/, int /*interp*/,
|
cv::Size outSz, double fx, double fy, int /*interp*/,
|
||||||
cv::gapi::fluid::Buffer &scratch)
|
cv::gapi::fluid::Buffer &scratch)
|
||||||
{
|
{
|
||||||
CV_Assert(in.depth == CV_8U && in.chan == 3);
|
GAPI_Assert(in.depth == CV_8U && in.chan == 3);
|
||||||
|
|
||||||
|
if (outSz.area() == 0)
|
||||||
|
{
|
||||||
|
outSz.width = static_cast<int>(round(in.size.width * fx));
|
||||||
|
outSz.height = static_cast<int>(round(in.size.height * fy));
|
||||||
|
}
|
||||||
|
|
||||||
cv::Size scratch_size{static_cast<int>(outSz.width * sizeof(ResizeUnit)), 1};
|
cv::Size scratch_size{static_cast<int>(outSz.width * sizeof(ResizeUnit)), 1};
|
||||||
|
|
||||||
|
@ -354,6 +354,20 @@ INSTANTIATE_TEST_CASE_P(ResizeTestFluid, ResizeTest,
|
|||||||
cv::Size(64, 64),
|
cv::Size(64, 64),
|
||||||
cv::Size(30, 30))));
|
cv::Size(30, 30))));
|
||||||
|
|
||||||
|
INSTANTIATE_TEST_CASE_P(ResizeTestFxFyFluid, ResizeTestFxFy,
|
||||||
|
Combine(Values(CV_8UC3/*CV_8UC1, CV_16UC1, CV_16SC1*/),
|
||||||
|
Values(cv::Size(1280, 720),
|
||||||
|
cv::Size(640, 480),
|
||||||
|
cv::Size(128, 128),
|
||||||
|
cv::Size(64, 64),
|
||||||
|
cv::Size(30, 30)),
|
||||||
|
Values(-1),
|
||||||
|
Values(CORE_FLUID),
|
||||||
|
Values(AbsExact().to_compare_obj()),
|
||||||
|
Values(/*cv::INTER_NEAREST,*/ cv::INTER_LINEAR/*, cv::INTER_AREA*/),
|
||||||
|
Values(0.5, 1, 2),
|
||||||
|
Values(0.5, 1, 2)));
|
||||||
|
|
||||||
INSTANTIATE_TEST_CASE_P(BackendOutputAllocationTestFluid, BackendOutputAllocationTest,
|
INSTANTIATE_TEST_CASE_P(BackendOutputAllocationTestFluid, BackendOutputAllocationTest,
|
||||||
Combine(Values(CV_8UC3, CV_16SC2, CV_32FC1),
|
Combine(Values(CV_8UC3, CV_16SC2, CV_32FC1),
|
||||||
Values(cv::Size(50, 50)),
|
Values(cv::Size(50, 50)),
|
||||||
|
Loading…
Reference in New Issue
Block a user