added performance tests
authorVladislav Vinogradov <vlad.vinogradov@itseez.com>
Thu, 9 Aug 2012 10:14:13 +0000 (14:14 +0400)
committerVladislav Vinogradov <vlad.vinogradov@itseez.com>
Thu, 9 Aug 2012 10:14:13 +0000 (14:14 +0400)
modules/gpu/perf/perf_video.cpp
modules/gpu/perf_cpu/perf_video.cpp

index 4ae18bd..6e577a4 100644 (file)
@@ -579,6 +579,77 @@ INSTANTIATE_TEST_CASE_P(Video, VIBE, testing::Combine(
     testing::Values(Channels(1), Channels(3), Channels(4))));\r
 \r
 //////////////////////////////////////////////////////\r
+// GMG\r
+\r
+IMPLEMENT_PARAM_CLASS(MaxFeatures, int)\r
+\r
+GPU_PERF_TEST(GMG, cv::gpu::DeviceInfo, std::string, Channels, MaxFeatures)\r
+{\r
+    cv::gpu::DeviceInfo devInfo = GET_PARAM(0);\r
+    cv::gpu::setDevice(devInfo.deviceID());\r
+    std::string inputFile = perf::TestBase::getDataPath(std::string("gpu/video/") + GET_PARAM(1));\r
+    int cn = GET_PARAM(2);\r
+    int maxFeatures = GET_PARAM(3);\r
+\r
+    cv::VideoCapture cap(inputFile);\r
+    ASSERT_TRUE(cap.isOpened());\r
+\r
+    cv::Mat frame;\r
+    cap >> frame;\r
+    ASSERT_FALSE(frame.empty());\r
+\r
+    if (cn != 3)\r
+    {\r
+        cv::Mat temp;\r
+        if (cn == 1)\r
+            cv::cvtColor(frame, temp, cv::COLOR_BGR2GRAY);\r
+        else\r
+            cv::cvtColor(frame, temp, cv::COLOR_BGR2BGRA);\r
+        cv::swap(temp, frame);\r
+    }\r
+\r
+    cv::gpu::GpuMat d_frame(frame);\r
+    cv::gpu::GpuMat d_fgmask;\r
+\r
+    cv::gpu::GMG_GPU gmg;\r
+    gmg.maxFeatures = maxFeatures;\r
+\r
+    gmg(d_frame, d_fgmask);\r
+\r
+    for (int i = 0; i < 150; ++i)\r
+    {\r
+        cap >> frame;\r
+        if (frame.empty())\r
+        {\r
+            cap.open(inputFile);\r
+            cap >> frame;\r
+        }\r
+\r
+        if (cn != 3)\r
+        {\r
+            cv::Mat temp;\r
+            if (cn == 1)\r
+                cv::cvtColor(frame, temp, cv::COLOR_BGR2GRAY);\r
+            else\r
+                cv::cvtColor(frame, temp, cv::COLOR_BGR2BGRA);\r
+            cv::swap(temp, frame);\r
+        }\r
+\r
+        d_frame.upload(frame);\r
+\r
+        startTimer(); next();\r
+        gmg(d_frame, d_fgmask);\r
+        stopTimer();\r
+    }\r
+}\r
+\r
+INSTANTIATE_TEST_CASE_P(Video, GMG, testing::Combine(\r
+    ALL_DEVICES,\r
+    testing::Values(std::string("768x576.avi"), std::string("1920x1080.avi")),\r
+    testing::Values(Channels(1), Channels(3), Channels(4)),\r
+    testing::Values(MaxFeatures(20), MaxFeatures(40), MaxFeatures(60))));\r
+\r
+//////////////////////////////////////////////////////\r
 // VideoWriter\r
 \r
 #ifdef WIN32\r
index f635f42..bada376 100644 (file)
@@ -329,6 +329,76 @@ INSTANTIATE_TEST_CASE_P(Video, MOG2_getBackgroundImage, testing::Combine(
     testing::Values(/*Channels(1),*/ Channels(3)/*, Channels(4)*/)));\r
 \r
 //////////////////////////////////////////////////////\r
+// GMG\r
+\r
+IMPLEMENT_PARAM_CLASS(MaxFeatures, int)\r
+\r
+GPU_PERF_TEST(GMG, cv::gpu::DeviceInfo, std::string, Channels, MaxFeatures)\r
+{\r
+    std::string inputFile = perf::TestBase::getDataPath(std::string("gpu/video/") + GET_PARAM(1));\r
+    int cn = GET_PARAM(2);\r
+    int maxFeatures = GET_PARAM(3);\r
+\r
+    cv::VideoCapture cap(inputFile);\r
+    ASSERT_TRUE(cap.isOpened());\r
+\r
+    cv::Mat frame;\r
+    cap >> frame;\r
+    ASSERT_FALSE(frame.empty());\r
+\r
+    if (cn != 3)\r
+    {\r
+        cv::Mat temp;\r
+        if (cn == 1)\r
+            cv::cvtColor(frame, temp, cv::COLOR_BGR2GRAY);\r
+        else\r
+            cv::cvtColor(frame, temp, cv::COLOR_BGR2BGRA);\r
+        cv::swap(temp, frame);\r
+    }\r
+\r
+    cv::Mat fgmask;\r
+    cv::Mat zeros(frame.size(), CV_8UC1, cv::Scalar::all(0));\r
+\r
+    cv::BackgroundSubtractorGMG gmg;\r
+    gmg.set("maxFeatures", maxFeatures);\r
+    gmg.initializeType(frame, 0.0, 255.0);\r
+\r
+    gmg(frame, fgmask);\r
+    gmg.updateBackgroundModel(zeros);\r
+\r
+    for (int i = 0; i < 150; ++i)\r
+    {\r
+        cap >> frame;\r
+        if (frame.empty())\r
+        {\r
+            cap.open(inputFile);\r
+            cap >> frame;\r
+        }\r
+\r
+        if (cn != 3)\r
+        {\r
+            cv::Mat temp;\r
+            if (cn == 1)\r
+                cv::cvtColor(frame, temp, cv::COLOR_BGR2GRAY);\r
+            else\r
+                cv::cvtColor(frame, temp, cv::COLOR_BGR2BGRA);\r
+            cv::swap(temp, frame);\r
+        }\r
+\r
+        startTimer(); next();\r
+        gmg(frame, fgmask);\r
+        gmg.updateBackgroundModel(zeros);\r
+        stopTimer();\r
+    }\r
+}\r
+\r
+INSTANTIATE_TEST_CASE_P(Video, GMG, testing::Combine(\r
+    ALL_DEVICES,\r
+    testing::Values(std::string("768x576.avi"), std::string("1920x1080.avi")),\r
+    testing::Values(Channels(1), Channels(3), Channels(4)),\r
+    testing::Values(MaxFeatures(20), MaxFeatures(40), MaxFeatures(60))));\r
+\r
+//////////////////////////////////////////////////////\r
 // VideoWriter\r
 \r
 #ifdef WIN32\r