如何找到FeatureDetector的良好匹配

时间:2015-06-25 06:47:56

标签: java opencv feature-detection

我在list cons(list l,element el) { list temp; temp=(NODO*)malloc(sizeof(NODO)); temp->e=el; temp->next=l; return temp; } list insord(list l, element el) { if(l==NULL) { return l=cons(l,el); } else { if(strcmp(l->e.parola,el.parola)>0) { return l=cons(l,el); } else { l->next=insord(l->next,el); } return l; } } list seconda_lista(list l2,list l1, int occ) { element temp; if(l1 != NULL) { if(l1->e.numero_volte > occ) { temp.numero_volte=l1->e.numero_volte; strcpy(temp.parola,l1->e.parola); l2=insord(l2,temp); } seconda_lista(l2,l1->next,occ); } } 中使用OpenCV 3.0,我想使用Java跟踪已知对象。然后,当我想从找到的匹配项中获取good_matches时,它不返回任何匹配项,因为它不满足FAST(FeatureDetector)/ORB(DescriptorExtractor)/BRUTEFORCE(DescriptorMathcer)条件。为了更好地理解下面的代码问题:

if clause

在上面的数组( double max_dist = 0, min_dist = 100; DMatch[] _matches = matches.toArray(); for (int i = 0; i < descriptors_object.rows(); i++) { double dist = _matches[i].distance; if (dist < min_dist) { min_dist = dist; } if (dist > max_dist) { max_dist = dist; } } )中有一个元素为0,因此_matches变为0,然后在以下循环中

min_dist

List<DMatch> good_matches = new ArrayList<>(); for (int i = 0; i < descriptors_object.rows(); i++) { if (_matches[i].distance < 3 * min_dist) { good_matches.add(_matches[i]); } } 内的condation将无法满足,因为if clause始终返回0,然后(3*0)列表为空。

我已经google了,并且还看到了OpenCV示例,所有这些示例与上面的代码相同。代码中是否有任何问题,或者有没有更好的方法来找到好的匹配。如果有人知道那么请告诉我。 提前致谢!

0 个答案:

没有答案