1
0
mirror of https://github.com/opencv/opencv.git synced 2026-07-21 19:33:03 +04:00
Files
opencv/apps/opencv_stitching_tool/opencv_stitching/feature_detector.py
T
Lukas-Alexander Weber fa5c7a9e75 Merge pull request #21020 from lukasalexanderweber:squash
Created Stitching Tool based on stitching_detailed.py
2021-11-08 11:54:06 +00:00

45 lines
1.4 KiB
Python

from collections import OrderedDict
import cv2 as cv
class FeatureDetector:
DETECTOR_CHOICES = OrderedDict()
try:
cv.xfeatures2d_SURF.create() # check if the function can be called
DETECTOR_CHOICES['surf'] = cv.xfeatures2d_SURF.create
except (AttributeError, cv.error):
print("SURF not available")
# if SURF not available, ORB is default
DETECTOR_CHOICES['orb'] = cv.ORB.create
try:
DETECTOR_CHOICES['sift'] = cv.SIFT_create
except AttributeError:
print("SIFT not available")
try:
DETECTOR_CHOICES['brisk'] = cv.BRISK_create
except AttributeError:
print("BRISK not available")
try:
DETECTOR_CHOICES['akaze'] = cv.AKAZE_create
except AttributeError:
print("AKAZE not available")
DEFAULT_DETECTOR = list(DETECTOR_CHOICES.keys())[0]
def __init__(self, detector=DEFAULT_DETECTOR, **kwargs):
self.detector = FeatureDetector.DETECTOR_CHOICES[detector](**kwargs)
def detect_features(self, img, *args, **kwargs):
return cv.detail.computeImageFeatures2(self.detector, img,
*args, **kwargs)
@staticmethod
def draw_keypoints(img, features, **kwargs):
kwargs.setdefault('color', (0, 255, 0))
keypoints = features.getKeypoints()
return cv.drawKeypoints(img, keypoints, None, **kwargs)