aihot  2017-05-02 16:16:53  OpenCV |   查看评论   
  
  •     //partition() 将dbb划分为两个子集,将满足两个box的重叠度小于0.5的元素移动到序列的前面,为一个子集,重叠度大于0.5的,  
  •     //放在序列后面,为第二个子集,但两个子集的大小不知道,返回第二类子集的起点  
  •     c = partition(dbb, T, (*bbcomp));   //重叠度小于0.5的box,属于不同的类,所以c是不同的类别个数  
  •     //c = clusterBB(dbb,T);  
  •     break;  
  •   }  
  •     
  •   cconf=vector<float>(c);   
  •   cbb=vector<BoundingBox>(c);  
  •   printf("Cluster indexes: ");  
  •   BoundingBox bx;  
  •   for (int i=0;i<c;i++){   //类别个数  
  •       float cnf=0;  
  •       int N=0,mx=0,my=0,mw=0,mh=0;  
  •       for (int j=0;j<T.size();j++){  //检测到的bounding box个数  
  •           if (T[j]==i){   //将聚类为同一个类别的box的坐标和大小进行累加  
  •               printf("%d ",i);  
  •               cnf=cnf+dconf[j];  
  •               mx=mx+dbb[j].x;  
  •               my=my+dbb[j].y;  
  •               mw=mw+dbb[j].width;  
  •               mh=mh+dbb[j].height;  
  •               N++;  
  •           }  
  •       }  
  •       if (N>0){   //然后求该类的box的坐标和大小的平均值,将平均值作为该类的box的代表  
  •           cconf[i]=cnf/N;  
  •           bx.x=cvRound(mx/N);  
  •           bx.y=cvRound(my/N);  
  •           bx.width=cvRound(mw/N);  
  •           bx.height=cvRound(mh/N);  
  •           cbb[i]=bx;  //返回的是聚类,每一个类都有一个代表的bounding box  
  •       }  
  •   }  
  •   printf("\n");  
  •  

    除特别注明外,本站所有文章均为 赢咖4注册 原创,转载请注明出处来自TLD(Tracking-Learning-Detection)学习与源码理解之(六)下

    留言与评论(共有 0 条评论)
       
    验证码:
    [lianlun]1[/lianlun]