The process flow
Features are extracted, matched, and tracked by the FeatureMatching
class, especially by its public match
method. However, before we can begin analyzing the incoming video stream, we have some homework to do. It might not be clear right away what some of these things mean (especially for SURF and FLANN), but we will discuss these steps in detail in the following sections. For now, we only have to worry about initialization:
class FeatureMatching: def __init__(self, train_image='salinger.jpg'):
- This sets up a SURF detector (see the next section for details) with a Hessian threshold between 300 and 500:
self.min_hessian = 400 self.SURF = cv2.SURF(self.min_hessian)
- We load a template of our object of interest (
self.img_obj
), or print an error if it cannot be found:self.img_obj = cv2.imread(train_image, cv2.CV_8UC1) if self.img_obj is None: print "Could not find train image " + train_imageraise SystemExit
- Also, store the shape of the image (
self.sh_train...