Finds robust features in the image. For each feature it returns its location, size, orientation and optionally the descriptor, basic or extended. The function can be used for object tracking and localization, image stitching etc

C# | Visual Basic | Visual C++ |
public static void cvExtractSURF( IntPtr image, IntPtr mask, out IntPtr keypoints, out IntPtr descriptors, IntPtr storage, MCvSURFParams parameters )
Public Shared Sub cvExtractSURF ( _ image As IntPtr, _ mask As IntPtr, _ <OutAttribute> ByRef keypoints As IntPtr, _ <OutAttribute> ByRef descriptors As IntPtr, _ storage As IntPtr, _ parameters As MCvSURFParams _ )
public: static void cvExtractSURF( IntPtr image, IntPtr mask, [OutAttribute] IntPtr% keypoints, [OutAttribute] IntPtr% descriptors, IntPtr storage, MCvSURFParams parameters )

- image (IntPtr)
- The input 8-bit grayscale image
- mask (IntPtr)
- The optional input 8-bit mask. The features are only found in the areas that contain more than 50% of non-zero mask pixels
- keypoints ( IntPtr %)
- The output parameter; double pointer to the sequence of keypoints. This will be the sequence of MCvSURFPoint structures
- descriptors ( IntPtr %)
- The optional output parameter; double pointer to the sequence of descriptors; Depending on the params.extended value, each element of the sequence will be either 64-element or 128-element floating-point (CV_32F) vector. If the parameter is NULL, the descriptors are not computed
- storage (IntPtr)
- Memory storage where keypoints and descriptors will be stored
- parameters (MCvSURFParams)
- Various algorithm parameters put to the structure CvSURFParams