kopia lustrzana https://github.com/OpenDroneMap/ODM
48 wiersze
2.0 KiB
Diff
48 wiersze
2.0 KiB
Diff
diff --git a/opensfm/context.py b/opensfm/context.py
|
|
index a01dd700..f54fcf87 100644
|
|
--- a/opensfm/context.py
|
|
+++ b/opensfm/context.py
|
|
@@ -17,6 +17,9 @@ BOW_PATH = os.path.join(abspath, 'data', 'bow')
|
|
|
|
|
|
# Handle different OpenCV versions
|
|
+OPENCV5 = int(cv2.__version__.split('.')[0]) >= 5 #future proofing SIFT support test (see features.py)
|
|
+OPENCV4 = int(cv2.__version__.split('.')[0]) >= 4
|
|
+OPENCV44 = int(cv2.__version__.split('.')[0]) == 4 and int(cv2.__version__.split('.')[1]) >= 4 # for SIFT support (see features.py)
|
|
OPENCV3 = int(cv2.__version__.split('.')[0]) >= 3
|
|
|
|
if hasattr(cv2, 'flann_Index'):
|
|
diff --git a/opensfm/features.py b/opensfm/features.py
|
|
index 3e80224b..78e51ce5 100644
|
|
--- a/opensfm/features.py
|
|
+++ b/opensfm/features.py
|
|
@@ -87,7 +87,13 @@ def _in_mask(point, width, height, mask):
|
|
def extract_features_sift(image, config):
|
|
sift_edge_threshold = config['sift_edge_threshold']
|
|
sift_peak_threshold = float(config['sift_peak_threshold'])
|
|
- if context.OPENCV3:
|
|
+ # SIFT support is in cv2 main from version 4.4.0
|
|
+ if context.OPENCV44 or context.OPENCV5:
|
|
+ detector = cv2.SIFT_create(
|
|
+ edgeThreshold=sift_edge_threshold,
|
|
+ contrastThreshold=sift_peak_threshold)
|
|
+ descriptor = detector
|
|
+ elif context.OPENCV3:
|
|
try:
|
|
detector = cv2.xfeatures2d.SIFT_create(
|
|
edgeThreshold=sift_edge_threshold,
|
|
@@ -105,7 +110,12 @@ def extract_features_sift(image, config):
|
|
while True:
|
|
logger.debug('Computing sift with threshold {0}'.format(sift_peak_threshold))
|
|
t = time.time()
|
|
- if context.OPENCV3:
|
|
+ # SIFT support is in cv2 main from version 4.4.0
|
|
+ if context.OPENCV44 or context.OPENCV5:
|
|
+ detector = cv2.SIFT_create(
|
|
+ edgeThreshold=sift_edge_threshold,
|
|
+ contrastThreshold=sift_peak_threshold)
|
|
+ elif context.OPENCV3:
|
|
detector = cv2.xfeatures2d.SIFT_create(
|
|
edgeThreshold=sift_edge_threshold,
|
|
contrastThreshold=sift_peak_threshold)
|