\r
EXPECT_MAT_SIMILAR(flowxy[0], d_flowx, 0.1);\r
EXPECT_MAT_SIMILAR(flowxy[1], d_flowy, 0.1);\r
-}\r
+};\r
\r
INSTANTIATE_TEST_CASE_P(GPU_Video, FarnebackOpticalFlow, testing::Combine(\r
ALL_DEVICES,\r
testing::Values(FarnebackOptFlowFlags(0), FarnebackOptFlowFlags(cv::OPTFLOW_FARNEBACK_GAUSSIAN)),\r
testing::Values(UseInitFlow(false), UseInitFlow(true))));\r
\r
+struct OpticalFlowNan : public BroxOpticalFlow {};\r
+\r
+TEST_P(OpticalFlowNan, Regression)\r
+{\r
+ cv::Mat frame0 = readImageType("opticalflow/frame0.png", CV_32FC1);\r
+ ASSERT_FALSE(frame0.empty());\r
+ cv::Mat r_frame0, r_frame1;\r
+ cv::resize(frame0, r_frame0, cv::Size(1380,1000));\r
+\r
+ cv::Mat frame1 = readImageType("opticalflow/frame1.png", CV_32FC1);\r
+ ASSERT_FALSE(frame1.empty());\r
+ cv::resize(frame1, r_frame1, cv::Size(1380,1000));\r
+\r
+ cv::gpu::BroxOpticalFlow brox(0.197f /*alpha*/, 50.0f /*gamma*/, 0.8f /*scale_factor*/,\r
+ 5 /*inner_iterations*/, 150 /*outer_iterations*/, 10 /*solver_iterations*/);\r
+\r
+ cv::gpu::GpuMat u;\r
+ cv::gpu::GpuMat v;\r
+ brox(loadMat(r_frame0), loadMat(r_frame1), u, v);\r
+\r
+ cv::Mat h_u, h_v;\r
+ u.download(h_u);\r
+ v.download(h_v);\r
+ EXPECT_TRUE(cv::checkRange(h_u));\r
+ EXPECT_TRUE(cv::checkRange(h_v));\r
+};\r
+\r
+INSTANTIATE_TEST_CASE_P(GPU_Video, OpticalFlowNan, ALL_DEVICES);\r
+\r
} // namespace\r