From b0bf54e7138aa14fa98f36be0b8304e9c8383ec8 Mon Sep 17 00:00:00 2001
From: Alexey Spizhevoy <no@email>
Date: Thu, 16 Feb 2012 11:48:56 +0000
Subject: [PATCH] Added a perf. test for gpu::FarnebackOpticalFlow

---
 modules/gpu/perf/perf_video.cpp | 33 +++++++++++++++++++++++++++++++++
 1 file changed, 33 insertions(+)

diff --git a/modules/gpu/perf/perf_video.cpp b/modules/gpu/perf/perf_video.cpp
index e81655e36..ff80aabb6 100644
--- a/modules/gpu/perf/perf_video.cpp
+++ b/modules/gpu/perf/perf_video.cpp
@@ -225,4 +225,37 @@ GPU_PERF_TEST_1(PyrLKOpticalFlowDense, cv::gpu::DeviceInfo)
 
 INSTANTIATE_TEST_CASE_P(Video, PyrLKOpticalFlowDense, ALL_DEVICES);
 
+
+//////////////////////////////////////////////////////
+// FarnebackOpticalFlowTest
+
+GPU_PERF_TEST_1(FarnebackOpticalFlowTest, cv::gpu::DeviceInfo)
+{
+    cv::gpu::DeviceInfo devInfo = GetParam();
+
+    cv::gpu::setDevice(devInfo.deviceID());
+
+    cv::Mat frame0_host = readImage("gpu/opticalflow/frame0.png", cv::IMREAD_GRAYSCALE);
+    cv::Mat frame1_host = readImage("gpu/opticalflow/frame1.png", cv::IMREAD_GRAYSCALE);
+
+    ASSERT_FALSE(frame0_host.empty());
+    ASSERT_FALSE(frame1_host.empty());
+
+    cv::gpu::GpuMat frame0(frame0_host);
+    cv::gpu::GpuMat frame1(frame1_host);
+    cv::gpu::GpuMat u;
+    cv::gpu::GpuMat v;
+
+    cv::gpu::FarnebackOpticalFlow calc;
+
+    declare.time(10);
+
+    TEST_CYCLE()
+    {
+        calc(frame0, frame1, u, v);
+    }
+}
+
+INSTANTIATE_TEST_CASE_P(Video, FarnebackOpticalFlowTest, ALL_DEVICES);
+
 #endif