aihot  2017-04-27 23:51:15  OpenCV |   查看评论   
float outradsq = _rOuter*_rOuter;  
  •       
  •     int dist;  
  •   
  •     //这四个是为了防止采集的框超出图像范围的,对采集的box的x和y坐标做限制  
  •     int minrow = max(0,(int)_objectBox.y-(int)_rInner);  
  •     int maxrow = min((int)rowsz-1,(int)_objectBox.y+(int)_rInner);  
  •     int mincol = max(0,(int)_objectBox.x-(int)_rInner);  
  •     int maxcol = min((int)colsz-1,(int)_objectBox.x+(int)_rInner);  
  •           
  •       
  •     int i = 0;  
  •     //分母相当于x能采集的范围乘以y能采集的范围,也就是可以采集的最大box个数,  
  •     //那么_maxSampleNum(我们需要采集的box的最大个数)肯定得小于或者等于它。  
  •     //那这个prob是干嘛的呢?到下面用到它的地方说  
  •     float prob = ((float)(_maxSampleNum))/(maxrow-minrow+1)/(maxcol-mincol+1);  
  •   
  •     int r;  
  •     int c;  
  •       
  •     _sampleBox.clear();//important  
  •     Rect rec(0,0,0,0);  
  •   
  •     for( r=minrow; r<=(int)maxrow; r++ )  
  •         for( c=mincol; c<=(int)maxcol; c++ ){  
  •             //计算生成的box到目标box的距离  
  •             dist = (_objectBox.y-r)*(_objectBox.y-r) + (_objectBox.x-c)*(_objectBox.x-c);  
  •   
  •             //后两个条件是保证距离需要在_rInner和_rOuter的范围内  
  •             //那么rng.uniform(0.,1.) < prob 这个是干嘛的呢?  
  •             //连着上面看,如果_maxSampleNum大于那个最大个数,prob就大于1,这样,  
  •             //rng.uniform(0.,1.) < prob这个条件就总能满足,表示在这个范围产生的  
  •             //所以box我都要了(因为我本身想要更多的,但是你给不了我那么多,那么你能给的,我肯定全要了)。  
  •             //那如果你给的太多了,我不要那么多,也就是prob<1,那我就随机地跳几个走好了
  •  

    除特别注明外,本站所有文章均为 赢咖4注册 原创,转载请注明出处来自压缩跟踪Compressive Tracking源码理解

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