From 6a29b13c457986090dd68592d549354fac0d282a Mon Sep 17 00:00:00 2001 From: Andrey Kamaev Date: Wed, 30 Jan 2013 16:07:38 +0400 Subject: [PATCH] Add test for issue #2075 --- modules/video/test/test_optflowpyrlk.cpp | 32 +++++++++++++++++++++++++++++++- 1 file changed, 31 insertions(+), 1 deletion(-) diff --git a/modules/video/test/test_optflowpyrlk.cpp b/modules/video/test/test_optflowpyrlk.cpp index f44e213..9a9035b 100644 --- a/modules/video/test/test_optflowpyrlk.cpp +++ b/modules/video/test/test_optflowpyrlk.cpp @@ -211,4 +211,34 @@ _exit_: TEST(Video_OpticalFlowPyrLK, accuracy) { CV_OptFlowPyrLKTest test; test.safe_run(); } -/* End of file. */ +TEST(Video_OpticalFlowPyrLK, submat) +{ + // see bug #2075 + std::string path = cvtest::TS::ptr()->get_data_path() + "../cv/shared/lena.png"; + + cv::Mat lenaImg = cv::imread(path); + ASSERT_FALSE(lenaImg.empty()); + + cv::Mat wholeImage; + cv::resize(lenaImg, wholeImage, cv::Size(1024, 1024)); + + cv::Mat img1 = wholeImage(cv::Rect(0, 0, 640, 360)).clone(); + cv::Mat img2 = wholeImage(cv::Rect(40, 60, 640, 360)); + + std::vector status; + std::vector error; + std::vector prev; + std::vector next; + + cv::RNG rng(123123); + + for(int i = 0; i < 50; ++i) + { + int x = rng.uniform(0, 640); + int y = rng.uniform(0, 360); + + prev.push_back(cv::Point2f((float)x, (float)y)); + } + + ASSERT_NO_THROW(cv::calcOpticalFlowPyrLK(img1, img2, prev, next, status, error)); +} -- 2.7.4