Filtrado de MatOfDMatch

Consulte http://docs.opencv.org/2.4.2/doc/tutorials/features2d/feature_flann_matcher/feature_flann_matcher.html

En algún momento de mi código invoco

myDescriptorMatcher.match(descriptors, result); 

Ahora, si quiero filtrar los partidos resultantes, creo que tengo que hacer algo feo como:

  List<DMatch> matchesList = matches.toList(); double maxDistance = 0; double minDistance = 1000; int rowCount = matchesList.size(); for (int i = 0; i < rowCount; i++) { double dist = matchesList.get(i).distance; if (dist < minDistance) minDistance = dist; if (dist > maxDistance) maxDistance = dist; } List<DMatch> goodMatchesList = new ArrayList<DMatch>(); double upperBound = 6 * minDistance; for (int i = 0; i < rowCount; i++) { if (matchesList.get(i).distance < upperBound) { goodMatchesList.add(matchesList.get(i)); } } MatOfDMatch goodMatches = new MatOfDMatch(); goodMatches.fromList(goodMatchesList); Features2d.drawMatches(mPreviousGray.submat(roi), mPrevDetectedFeatures, m.submat(roi), curDetectedFeatures, goodMatches, result); 
  1. ¿Se puede hacer esto sin las feas conversiones de ida y vuelta a las listas?
  2. He intentado hacerlo a través de JNI, pero ¿cómo puedo transferir el MatOFDMatch de Java a C + + y volver?

FlipAndroid es un fan de Google para Android, Todo sobre Android Phones, Android Wear, Android Dev y Aplicaciones para Android Aplicaciones.