Commit d37ecaa4ab0e7d874e59e0df3b9f9b979336b230
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 | } |