Merge pull request #13415 from alalek:issue_13406
authorAlexander Alekhin <alexander.a.alekhin@gmail.com>
Wed, 12 Dec 2018 10:26:31 +0000 (13:26 +0300)
committerGitHub <noreply@github.com>
Wed, 12 Dec 2018 10:26:31 +0000 (13:26 +0300)
* python: add checks for drawKeypoints() symbol

* python: more hacks in hdr_parser.py

modules/python/src2/hdr_parser.py
modules/python/test/test_features2d.py [new file with mode: 0644]

index 9d339af..41100ba 100755 (executable)
@@ -831,7 +831,7 @@ class CppHeaderParser(object):
                 l = l[pos+2:]
                 state = SCAN
 
-            if l.startswith('CV__'): # just ignore this lines
+            if l.startswith('CV__') or l.startswith('__CV_'): # just ignore these lines
                 #print('IGNORE: ' + l)
                 state = SCAN
                 continue
@@ -845,11 +845,17 @@ class CppHeaderParser(object):
 
                 if not token:
                     block_head += " " + l
-                    break
+                    block_head = block_head.strip()
+                    if len(block_head) > 0 and block_head[-1] == ')' and block_head.startswith('CV_ENUM_FLAGS('):
+                        l = ''
+                        token = ';'
+                    else:
+                        break
 
                 if token == "//":
                     block_head += " " + l[:pos]
-                    break
+                    l = ''
+                    continue
 
                 if token == "/*":
                     block_head += " " + l[:pos]
diff --git a/modules/python/test/test_features2d.py b/modules/python/test/test_features2d.py
new file mode 100644 (file)
index 0000000..5e16e80
--- /dev/null
@@ -0,0 +1,18 @@
+#!/usr/bin/env python
+from __future__ import print_function
+
+import numpy as np
+import cv2 as cv
+
+from tests_common import NewOpenCVTests
+
+class Features2D_Tests(NewOpenCVTests):
+
+    def test_issue_13406(self):
+        self.assertEqual(True, hasattr(cv, 'drawKeypoints'))
+        self.assertEqual(True, hasattr(cv, 'DrawMatchesFlags_NOT_DRAW_SINGLE_POINTS'))
+        self.assertEqual(True, hasattr(cv, 'DRAW_MATCHES_FLAGS_NOT_DRAW_SINGLE_POINTS'))
+
+
+if __name__ == '__main__':
+    NewOpenCVTests.bootstrap()