replaced alloca() (a.k.a. cvStackAlloc) with AutoBuffer or vector() everywhere. cvStackAlloc() is still defined, but we do not need alloca() anymore to compile and run OpenCV (fixes #889 and may be some others)
This commit is contained in:
@@ -482,8 +482,9 @@ icvComputeK( CvStereoGCState* state )
|
||||
{
|
||||
int x, y, x1, d, i, j, rows = state->left->rows, cols = state->left->cols, n = 0;
|
||||
int mind = state->minDisparity, nd = state->numberOfDisparities, maxd = mind + nd;
|
||||
int k = MIN(MAX((nd + 2)/4, 3), nd);
|
||||
int *arr = (int*)cvStackAlloc(k*sizeof(arr[0])), delta, t, sum = 0;
|
||||
int k = MIN(MAX((nd + 2)/4, 3), nd), delta, t, sum = 0;
|
||||
vector<int> _arr(k);
|
||||
int *arr = &_arr[0];
|
||||
|
||||
for( y = 0; y < rows; y++ )
|
||||
{
|
||||
@@ -846,8 +847,6 @@ CV_IMPL void cvFindStereoCorrespondenceGC( const CvArr* _left, const CvArr* _rig
|
||||
CvSize size;
|
||||
int iter, i, nZeroExpansions = 0;
|
||||
CvRNG rng = cvRNG(-1);
|
||||
int* disp;
|
||||
CvMat _disp;
|
||||
int64 E;
|
||||
|
||||
CV_Assert( state != 0 );
|
||||
@@ -902,8 +901,9 @@ CV_IMPL void cvFindStereoCorrespondenceGC( const CvArr* _left, const CvArr* _rig
|
||||
|
||||
icvInitStereoConstTabs();
|
||||
icvInitGraySubpix( left, right, state->left, state->right );
|
||||
disp = (int*)cvStackAlloc( state->numberOfDisparities*sizeof(disp[0]) );
|
||||
_disp = cvMat( 1, state->numberOfDisparities, CV_32S, disp );
|
||||
|
||||
vector<int> disp(state->numberOfDisparities);
|
||||
CvMat _disp = cvMat( 1, (int)disp.size(), CV_32S, &disp[0] );
|
||||
cvRange( &_disp, state->minDisparity, state->minDisparity + state->numberOfDisparities );
|
||||
cvRandShuffle( &_disp, &rng );
|
||||
|
||||
|
Reference in New Issue
Block a user