In the image sequence capture, only search for the ordinal in the file name.
authorRoman Donchenko <roman.donchenko@itseez.com>
Tue, 12 Nov 2013 12:15:41 +0000 (16:15 +0400)
committerRoman Donchenko <roman.donchenko@itseez.com>
Tue, 12 Nov 2013 12:26:21 +0000 (16:26 +0400)
Searching in directory names can yield confusing results; e.g. if
the input is "jpeg2000/image1.jp2", it will infer the pattern
"jpeg%04d/image1.jp2", which is likely not what the user intended.

If the user really desires for the variable part to be in the
directory name, it can always use an explicit pattern.

modules/highgui/src/cap_images.cpp

index e2feb0d..e1a8b8b 100644 (file)
@@ -200,8 +200,18 @@ static char* icvExtractPattern(const char *filename, unsigned *offset)
     }
     else // no pattern filename was given - extract the pattern
     {
-        for(at = name; *at && !isdigit(*at); at++)
-            ;
+        at = name;
+
+        // ignore directory names
+        char *slash = strrchr(at, '/');
+        if (slash) at = slash + 1;
+
+#ifdef _WIN32
+        slash = strrchr(at, '\\');
+        if (slash) at = slash + 1;
+#endif
+
+        while (*at && !isdigit(*at)) at++;
 
         if(!*at)
             return 0;