/// <summary> /// Finds the best match for each descriptor from a query set. /// </summary> /// <param name="queryDescriptors">Query set of descriptors.</param> /// <param name="trainDescriptors">Train set of descriptors. This set is not added to the train descriptors collection stored in the class object.</param> /// <param name="matches">If a query descriptor is masked out in mask , no match is added for this descriptor. So, matches size may be smaller than the query descriptors count.</param> /// <param name="mask">Mask specifying permissible matches between an input query and train matrices of descriptors.</param> public void Match( IInputArray queryDescriptors, IInputArray trainDescriptors, VectorOfDMatch matches, IInputArray mask = null) { using (InputArray iaQueryDesccriptor = queryDescriptors.GetInputArray()) using (InputArray iaTrainDescriptor = trainDescriptors.GetInputArray()) using (InputArray iaMask = mask == null ? InputArray.GetEmpty() : mask.GetInputArray()) { Features2DInvoke.cveDescriptorMatcherMatch1(_descriptorMatcherPtr, iaQueryDesccriptor, iaTrainDescriptor, matches, iaMask); } }