Commit d37ecaa4ab0e7d874e59e0df3b9f9b979336b230

Authored by Scott Klum
1 parent 3f2b76da

Less casting

Showing 1 changed file with 16 additions and 21 deletions
openbr/core/boost.cpp
@@ -431,8 +431,8 @@ void CascadeBoostTrainData::setData( const FeatureEvaluator* _featureEvaluator, @@ -431,8 +431,8 @@ void CascadeBoostTrainData::setData( const FeatureEvaluator* _featureEvaluator,
431 int* idst = 0; 431 int* idst = 0;
432 unsigned short* udst = 0; 432 unsigned short* udst = 0;
433 433
434 - uint64 effective_buf_size = 0;  
435 - int effective_buf_height = 0, effective_buf_width = 0; 434 + uint64_t effective_buf_size = 0;
  435 + uint64_t effective_buf_height = 0, effective_buf_width = 0;
436 436
437 clear(); 437 clear();
438 shared = true; 438 shared = true;
@@ -464,12 +464,7 @@ void CascadeBoostTrainData::setData( const FeatureEvaluator* _featureEvaluator, @@ -464,12 +464,7 @@ void CascadeBoostTrainData::setData( const FeatureEvaluator* _featureEvaluator,
464 464
465 // 1048576 is the number of bytes in a megabyte 465 // 1048576 is the number of bytes in a megabyte
466 numPrecalcVal = min( cvRound((double)_precalcValBufSize*1048576. / (sizeof(float)*sample_count)), var_count ); 466 numPrecalcVal = min( cvRound((double)_precalcValBufSize*1048576. / (sizeof(float)*sample_count)), var_count );
467 - qDebug("MB required to cache all %d features: %llu", var_count, (sizeof(float)*(uint64_t)sample_count*var_count)/1048576);  
468 - qDebug("Features cached: %.2f", float(numPrecalcVal)/var_count);  
469 -  
470 numPrecalcIdx = min( cvRound((double)_precalcIdxBufSize*1048576. / ((is_buf_16u ? sizeof(unsigned short) : sizeof (int))*sample_count)), var_count ); 467 numPrecalcIdx = min( cvRound((double)_precalcIdxBufSize*1048576. / ((is_buf_16u ? sizeof(unsigned short) : sizeof (int))*sample_count)), var_count );
471 - qDebug("MB required to cache all %d sorted indices: %llu", var_count, ((is_buf_16u ? sizeof(unsigned short) : sizeof (int))*(uint64_t)sample_count*var_count)/1048576);  
472 - qDebug("Indices cached: %.2f", float(numPrecalcIdx)/var_count);  
473 468
474 assert( numPrecalcIdx >= 0 && numPrecalcVal >= 0 ); 469 assert( numPrecalcIdx >= 0 && numPrecalcVal >= 0 );
475 470
@@ -505,7 +500,7 @@ void CascadeBoostTrainData::setData( const FeatureEvaluator* _featureEvaluator, @@ -505,7 +500,7 @@ void CascadeBoostTrainData::setData( const FeatureEvaluator* _featureEvaluator,
505 500
506 buf_size = -1; // the member buf_size is obsolete 501 buf_size = -1; // the member buf_size is obsolete
507 502
508 - effective_buf_size = (uint64)(work_var_count + 1)*(uint64)sample_count * buf_count; // this is the total size of "CvMat buf" to be allocated 503 + effective_buf_size = (work_var_count + 1)*sample_count * buf_count; // this is the total size of "CvMat buf" to be allocated
509 504
510 effective_buf_width = sample_count; 505 effective_buf_width = sample_count;
511 effective_buf_height = work_var_count+1; 506 effective_buf_height = work_var_count+1;
@@ -514,7 +509,7 @@ void CascadeBoostTrainData::setData( const FeatureEvaluator* _featureEvaluator, @@ -514,7 +509,7 @@ void CascadeBoostTrainData::setData( const FeatureEvaluator* _featureEvaluator,
514 else 509 else
515 effective_buf_width *= buf_count; 510 effective_buf_width *= buf_count;
516 511
517 - if ((uint64)effective_buf_width * (uint64)effective_buf_height != effective_buf_size) 512 + if (effective_buf_width * effective_buf_height != effective_buf_size)
518 { 513 {
519 CV_Error(CV_StsBadArg, "The memory buffer cannot be allocated since its size exceeds integer fields limit"); 514 CV_Error(CV_StsBadArg, "The memory buffer cannot be allocated since its size exceeds integer fields limit");
520 } 515 }
@@ -548,9 +543,9 @@ void CascadeBoostTrainData::setData( const FeatureEvaluator* _featureEvaluator, @@ -548,9 +543,9 @@ void CascadeBoostTrainData::setData( const FeatureEvaluator* _featureEvaluator,
548 543
549 // set sample labels 544 // set sample labels
550 if (is_buf_16u) 545 if (is_buf_16u)
551 - udst = (unsigned short*)(buf->data.s + (uint64)work_var_count*sample_count); 546 + udst = (unsigned short*)(buf->data.s + (uint64_t)work_var_count*sample_count);
552 else 547 else
553 - idst = buf->data.i + (uint64)work_var_count*sample_count; 548 + idst = buf->data.i + (uint64_t)work_var_count*sample_count;
554 549
555 for (int si = 0; si < sample_count; si++) 550 for (int si = 0; si < sample_count; si++)
556 { 551 {
@@ -635,9 +630,9 @@ void CascadeBoostTrainData::get_ord_var_data( CvDTreeNode* n, int vi, float* ord @@ -635,9 +630,9 @@ void CascadeBoostTrainData::get_ord_var_data( CvDTreeNode* n, int vi, float* ord
635 // have we precalculated (presorted) the training samples by their feature response? 630 // have we precalculated (presorted) the training samples by their feature response?
636 if (vi < numPrecalcIdx) { 631 if (vi < numPrecalcIdx) {
637 if (!is_buf_16u) 632 if (!is_buf_16u)
638 - *sortedIndices = buf->data.i + n->buf_idx*get_length_subbuf() + (uint64)vi*sample_count + n->offset; 633 + *sortedIndices = buf->data.i + n->buf_idx*get_length_subbuf() + (uint64_t)vi*sample_count + n->offset;
639 else { 634 else {
640 - const unsigned short* shortIndices = (const unsigned short*)(buf->data.s + n->buf_idx*get_length_subbuf() + (uint64)vi*sample_count + n->offset ); 635 + const unsigned short* shortIndices = (const unsigned short*)(buf->data.s + n->buf_idx*get_length_subbuf() + (uint64_t)vi*sample_count + n->offset );
641 for (int i = 0; i < nodeSampleCount; i++) 636 for (int i = 0; i < nodeSampleCount; i++)
642 sortedIndicesBuf[i] = shortIndices[i]; 637 sortedIndicesBuf[i] = shortIndices[i];
643 *sortedIndices = sortedIndicesBuf; 638 *sortedIndices = sortedIndicesBuf;
@@ -746,16 +741,16 @@ struct IndexPrecalc : Precalc @@ -746,16 +741,16 @@ struct IndexPrecalc : Precalc
746 idst = buf->data.i; 741 idst = buf->data.i;
747 } 742 }
748 743
749 - void setBuffer(int fi, int si) const 744 + void setBuffer(uint64_t fi, uint64_t si) const
750 { 745 {
751 - if (isBufShort) *(udst + (uint64)fi*sampleCount + si) = (unsigned short)si;  
752 - else *(idst + (uint64)fi*sampleCount + si) = si; 746 + if (isBufShort) *(udst + fi*sampleCount + si) = (unsigned short)si;
  747 + else *(idst + fi*sampleCount + si) = si;
753 } 748 }
754 749
755 - void sortBuffer(int fi, float *valCachePtr) const 750 + void sortBuffer(uint64_t fi, float *valCachePtr) const
756 { 751 {
757 - if (isBufShort) icvSortUShAux(udst + (uint64)fi*sampleCount, sampleCount, valCachePtr);  
758 - else icvSortIntAux(idst + (uint64)fi*sampleCount, sampleCount, valCachePtr); 752 + if (isBufShort) icvSortUShAux(udst + fi*sampleCount, sampleCount, valCachePtr);
  753 + else icvSortIntAux(idst + fi*sampleCount, sampleCount, valCachePtr);
759 } 754 }
760 755
761 virtual void operator()(const Range& range) const 756 virtual void operator()(const Range& range) const
@@ -1173,11 +1168,11 @@ void CascadeBoost::update_weights(CvBoostTree* tree) @@ -1173,11 +1168,11 @@ void CascadeBoost::update_weights(CvBoostTree* tree)
1173 // set the labels to find (from within weak tree learning proc) 1168 // set the labels to find (from within weak tree learning proc)
1174 // the particular sample weight, and where to store the response. 1169 // the particular sample weight, and where to store the response.
1175 if (data->is_buf_16u) { 1170 if (data->is_buf_16u) {
1176 - unsigned short* labels = (unsigned short*)(buf->data.s + data->data_root->buf_idx*length_buf_row + data->data_root->offset + (uint64)(data->work_var_count-1)*data->sample_count); 1171 + unsigned short* labels = (unsigned short*)(buf->data.s + data->data_root->buf_idx*length_buf_row + data->data_root->offset + (uint64_t)(data->work_var_count-1)*data->sample_count);
1177 for (int i = 0; i < n; i++) 1172 for (int i = 0; i < n; i++)
1178 labels[i] = (unsigned short)i; 1173 labels[i] = (unsigned short)i;
1179 } else { 1174 } else {
1180 - int* labels = buf->data.i + data->data_root->buf_idx*length_buf_row + data->data_root->offset + (uint64)(data->work_var_count-1)*data->sample_count; 1175 + int* labels = buf->data.i + data->data_root->buf_idx*length_buf_row + data->data_root->offset + (uint64_t)(data->work_var_count-1)*data->sample_count;
1181 for( int i = 0; i < n; i++ ) 1176 for( int i = 0; i < n; i++ )
1182 labels[i] = i; 1177 labels[i] = i;
1183 } 1178 }