To complete the answer of thdrksdfthmn :
- rows is the number of query keypoints, cols is the size of the descriptors (depends on the type of the descriptor, for SIFT it is 128, for SURF it is 128, for U-SURF it is 64). So each row in queryDescriptors contain the values corresponding to the descriptor of one query keypoints. The method "match" find for each query keypoint the closest train keypoint. If you have 10 query keypoints and 20 train keypoints, you will have 10 matches (of course if you match query to train keypoints).
- You can sort yourself the list of DMatch by distance and pick only the 10 first matches. But, by doing that, if the two images are completly different you will certainly have 10 false matches.
You should also take a look at this paper to see the difference between each matching strategie: A performance evaluation of local descriptors.