March 2020
Intermediate to advanced
366 pages
9h 8m
English
The alternative is to use an approximate k-nearest neighbor (kNN) algorithm to find correspondences, which is based on the fast third-party library, FLANN. A FLANN match is performed with the following code snippet, where we use kNN with k=2:
def match_features(self, desc_frame: np.ndarray) -> List[cv2.DMatch]: matches = self.flann.knnMatch(self.desc_train, desc_frame, k=2)
The result of flann.knnMatch is a list of correspondences between two sets of descriptors, both contained in the matches variable. These are the train set, because it corresponds to the pattern image of our object of interest, and the query set, because it corresponds to the image in which we are searching for our object of interest. ...