我在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示例,所有这些示例与上面的代码相同。代码中是否有任何问题,或者有没有更好的方法来找到好的匹配。如果有人知道那么请告诉我。 提前致谢!