TEST_CYCLE() cv::gpu::merge(d_src, dst);
- GPU_SANITY_CHECK(dst);
+ GPU_SANITY_CHECK(dst, 1e-10);
}
else
{
const cv::gpu::GpuMat& dst0 = dst[0];
const cv::gpu::GpuMat& dst1 = dst[1];
- GPU_SANITY_CHECK(dst0);
- GPU_SANITY_CHECK(dst1);
+ GPU_SANITY_CHECK(dst0, 1e-10);
+ GPU_SANITY_CHECK(dst1, 1e-10);
}
else
{
TEST_CYCLE() cv::gpu::add(d_src1, d_src2, dst);
- GPU_SANITY_CHECK(dst);
+ GPU_SANITY_CHECK(dst, 1e-10);
}
else
{
TEST_CYCLE() cv::gpu::add(d_src, s, dst);
- GPU_SANITY_CHECK(dst);
+ GPU_SANITY_CHECK(dst, 1e-10);
}
else
{
TEST_CYCLE() cv::gpu::subtract(d_src1, d_src2, dst);
- GPU_SANITY_CHECK(dst);
+ GPU_SANITY_CHECK(dst, 1e-10);
}
else
{
TEST_CYCLE() cv::gpu::subtract(d_src, s, dst);
- GPU_SANITY_CHECK(dst);
+ GPU_SANITY_CHECK(dst, 1e-10);
}
else
{
TEST_CYCLE() cv::gpu::multiply(d_src1, d_src2, dst);
- GPU_SANITY_CHECK(dst);
+ GPU_SANITY_CHECK(dst, 1e-6);
}
else
{
TEST_CYCLE() cv::gpu::multiply(d_src, s, dst);
- GPU_SANITY_CHECK(dst);
+ GPU_SANITY_CHECK(dst, 1e-6);
}
else
{
TEST_CYCLE() cv::gpu::divide(d_src1, d_src2, dst);
- GPU_SANITY_CHECK(dst);
+ GPU_SANITY_CHECK(dst, 1e-6);
}
else
{
TEST_CYCLE() cv::gpu::divide(d_src, s, dst);
- GPU_SANITY_CHECK(dst);
+ GPU_SANITY_CHECK(dst, 1e-6);
}
else
{
TEST_CYCLE() cv::gpu::divide(s[0], d_src, dst);
- GPU_SANITY_CHECK(dst);
+ GPU_SANITY_CHECK(dst, 1e-6);
}
else
{
TEST_CYCLE() cv::gpu::absdiff(d_src1, d_src2, dst);
- GPU_SANITY_CHECK(dst);
+ GPU_SANITY_CHECK(dst, 1e-10);
}
else
{
TEST_CYCLE() cv::gpu::absdiff(d_src, s, dst);
- GPU_SANITY_CHECK(dst);
+ GPU_SANITY_CHECK(dst, 1e-10);
}
else
{
TEST_CYCLE() cv::gpu::addWeighted(d_src1, 0.5, d_src2, 0.5, 10.0, dst, dst_depth);
- GPU_SANITY_CHECK(dst);
+ GPU_SANITY_CHECK(dst, 1e-10);
}
else
{
TEST_CYCLE() cv::gpu::gemm(d_src1, d_src2, 1.0, d_src3, 1.0, dst, flags);
- GPU_SANITY_CHECK(dst);
+ GPU_SANITY_CHECK(dst, 1e-6);
}
else
{
TEST_CYCLE() cv::gpu::transpose(d_src, dst);
- GPU_SANITY_CHECK(dst);
+ GPU_SANITY_CHECK(dst, 1e-10);
}
else
{
TEST_CYCLE() cv::gpu::phase(d_src1, d_src2, dst, angleInDegrees);
- GPU_SANITY_CHECK(dst);
+ GPU_SANITY_CHECK(dst, 1e-6, ERROR_RELATIVE);
}
else
{
TEST_CYCLE() cv::gpu::cartToPolar(d_src1, d_src2, magnitude, angle, angleInDegrees);
GPU_SANITY_CHECK(magnitude);
- GPU_SANITY_CHECK(angle);
+ GPU_SANITY_CHECK(angle, 1e-6, ERROR_RELATIVE);
}
else
{
TEST_CYCLE() cv::gpu::minMax(d_src, &gpu_minVal, &gpu_maxVal, cv::gpu::GpuMat(), d_buf);
- SANITY_CHECK(gpu_minVal);
- SANITY_CHECK(gpu_maxVal);
+ SANITY_CHECK(gpu_minVal, 1e-10);
+ SANITY_CHECK(gpu_maxVal, 1e-10);
}
else
{
TEST_CYCLE() cv::gpu::minMaxLoc(d_src, &gpu_minVal, &gpu_maxVal, &gpu_minLoc, &gpu_maxLoc, cv::gpu::GpuMat(), d_valbuf, d_locbuf);
- SANITY_CHECK(gpu_minVal);
- SANITY_CHECK(gpu_maxVal);
+ SANITY_CHECK(gpu_minVal, 1e-10);
+ SANITY_CHECK(gpu_maxVal, 1e-10);
}
else
{
sortKeyPoints(gpu_keypoints, gpu_descriptors);
SANITY_CHECK_KEYPOINTS(gpu_keypoints);
- SANITY_CHECK(gpu_descriptors);
+ SANITY_CHECK(gpu_descriptors, 1e-3);
}
else
{
Combine(GPU_TYPICAL_MAT_SIZES,
Values(CV_8U, CV_16U, CV_32F),
GPU_CHANNELS_1_3_4,
- ALL_INTERPOLATIONS,
+ Values(Interpolation(cv::INTER_NEAREST), Interpolation(cv::INTER_LINEAR), Interpolation(cv::INTER_CUBIC)),
Values(0.5, 0.3, 2.0)))
{
declare.time(20.0);
TEST_CYCLE() cv::gpu::resize(d_src, dst, cv::Size(), f, f, interpolation);
- GPU_SANITY_CHECK(dst);
+ GPU_SANITY_CHECK(dst, 1e-3, ERROR_RELATIVE);
}
else
{
TEST_CYCLE() cv::gpu::warpAffine(d_src, dst, M, size, interpolation, borderMode);
- GPU_SANITY_CHECK(dst);
+ GPU_SANITY_CHECK(dst, 1);
}
else
{
TEST_CYCLE() cv::gpu::warpPerspective(d_src, dst, M, size, interpolation, borderMode);
- GPU_SANITY_CHECK(dst);
+ GPU_SANITY_CHECK(dst, 1);
}
else
{
TEST_CYCLE() cv::gpu::threshold(d_src, dst, 100.0, 255.0, threshOp);
- GPU_SANITY_CHECK(dst);
+ GPU_SANITY_CHECK(dst, 1e-10);
}
else
{
TEST_CYCLE() cv::gpu::rotate(d_src, dst, size, 30.0, 0, 0, interpolation);
- GPU_SANITY_CHECK(dst);
+ GPU_SANITY_CHECK(dst, 1e-3, ERROR_RELATIVE);
}
else
{
TEST_CYCLE() cv::gpu::alphaComp(d_img1, d_img2, dst, alpha_op);
- GPU_SANITY_CHECK(dst);
+ GPU_SANITY_CHECK(dst, 1e-3, ERROR_RELATIVE);
}
else
{
dot* stack;
};
-PERF_TEST_P(Image, Labeling_ConnectivityMask,
+PERF_TEST_P(Image, DISABLED_Labeling_ConnectivityMask,
Values<string>("gpu/labeling/aloe-disp.png"))
{
declare.time(1.0);
}
}
-PERF_TEST_P(Image, Labeling_ConnectedComponents,
+PERF_TEST_P(Image, DISABLED_Labeling_ConnectedComponents,
Values<string>("gpu/labeling/aloe-disp.png"))
{
declare.time(1.0);
TEST_CYCLE() dst.setTo(val, d_mask);
- GPU_SANITY_CHECK(dst);
+ GPU_SANITY_CHECK(dst, 1e-10);
}
else
{
TEST_CYCLE() d_src.copyTo(dst, d_mask);
- GPU_SANITY_CHECK(dst);
+ GPU_SANITY_CHECK(dst, 1e-10);
}
else
{
TEST_CYCLE() d_src.convertTo(dst, depth2, a, b);
- GPU_SANITY_CHECK(dst);
+ GPU_SANITY_CHECK(dst, 1e-10);
}
else
{
TEST_CYCLE() d_alg(d_frame0, d_frame1, u, v);
- GPU_SANITY_CHECK(u);
- GPU_SANITY_CHECK(v);
+ GPU_SANITY_CHECK(u, 1e-4);
+ GPU_SANITY_CHECK(v, 1e-4);
}
else
{
TEST_CYCLE() fastBM(d_frame0, d_frame1, u, v, max_range.width, block_size.width);
- GPU_SANITY_CHECK(u);
- GPU_SANITY_CHECK(v);
+ GPU_SANITY_CHECK(u, 2);
+ GPU_SANITY_CHECK(v, 2);
}
else
{
if (PERF_RUN_GPU())
{
- cv::gpu::GpuMat d_frame(frame);
cv::gpu::MOG2_GPU d_mog2;
+ d_mog2.bShadowDetection = false;
+
+ cv::gpu::GpuMat d_frame(frame);
cv::gpu::GpuMat foreground;
d_mog2(d_frame, foreground);
else
{
cv::BackgroundSubtractorMOG2 mog2;
+ mog2.set("detectShadows", false);
+
cv::Mat foreground;
mog2(frame, foreground);
tWeight += gmm_weight(mode * frame.rows + y, x);
if (tWeight > c_TB)
break;
- };
+ }
}
fgmask(y, x) = background ? 0 : isShadow ? c_shadowVal : 255;
}}}
-#endif /* CUDA_DISABLER */
\ No newline at end of file
+#endif /* CUDA_DISABLER */
if ( y > 0 && connected(intensity, image(y - 1, x)))
c |= UP;
- if ( x - 1 < image.cols && connected(intensity, image(y, x + 1)))
+ if ( x + 1 < image.cols && connected(intensity, image(y, x + 1)))
c |= RIGHT;
- if ( y - 1 < image.rows && connected(intensity, image(y + 1, x)))
+ if ( y + 1 < image.rows && connected(intensity, image(y + 1, x)))
c |= DOWN;
components(y, x) = c;
//////////////////////////////////////////////////////
// MOG2
-PARAM_TEST_CASE(MOG2, cv::gpu::DeviceInfo, std::string, UseGray, UseRoi)
+namespace
+{
+ IMPLEMENT_PARAM_CLASS(DetectShadow, bool)
+}
+
+PARAM_TEST_CASE(MOG2, cv::gpu::DeviceInfo, std::string, UseGray, DetectShadow, UseRoi)
{
cv::gpu::DeviceInfo devInfo;
std::string inputFile;
bool useGray;
+ bool detectShadow;
bool useRoi;
virtual void SetUp()
cv::gpu::setDevice(devInfo.deviceID());
inputFile = std::string(cvtest::TS::ptr()->get_data_path()) + "video/" + GET_PARAM(1);
-
useGray = GET_PARAM(2);
-
- useRoi = GET_PARAM(3);
+ detectShadow = GET_PARAM(3);
+ useRoi = GET_PARAM(4);
}
};
ASSERT_FALSE(frame.empty());
cv::gpu::MOG2_GPU mog2;
+ mog2.bShadowDetection = detectShadow;
cv::gpu::GpuMat foreground = createMat(frame.size(), CV_8UC1, useRoi);
cv::BackgroundSubtractorMOG2 mog2_gold;
+ mog2_gold.set("detectShadows", detectShadow);
cv::Mat foreground_gold;
for (int i = 0; i < 10; ++i)
mog2_gold(frame, foreground_gold);
- double norm = cv::norm(foreground_gold, cv::Mat(foreground), cv::NORM_L1);
-
- norm /= foreground_gold.size().area();
-
- ASSERT_LE(norm, 0.09);
+ if (detectShadow)
+ {
+ ASSERT_MAT_SIMILAR(foreground_gold, foreground, 1e-2);
+ }
+ else
+ {
+ ASSERT_MAT_NEAR(foreground_gold, foreground, 0);
+ }
}
}
cv::Mat frame;
cv::gpu::MOG2_GPU mog2;
+ mog2.bShadowDetection = detectShadow;
cv::gpu::GpuMat foreground;
cv::BackgroundSubtractorMOG2 mog2_gold;
+ mog2_gold.set("detectShadows", detectShadow);
cv::Mat foreground_gold;
for (int i = 0; i < 10; ++i)
ALL_DEVICES,
testing::Values(std::string("768x576.avi")),
testing::Values(UseGray(true), UseGray(false)),
+ testing::Values(DetectShadow(true), DetectShadow(false)),
WHOLE_SUBMAT));
//////////////////////////////////////////////////////