OpenCV случайный лес CvRTrees ошибка

Я получил эту ошибку при использовании случайного леса внутри OpenCV:

OpenCV Error: Bad argument (5273-th value of 220-th (ordered) variable (=-1.70141e+38) is too large) in CvDTreeTrainData::set_data, file /home/XXX/Downloads/opencv-2.4.6.1/modules/ml/src/tree.cpp, line 551
terminate called after throwing an instance of 'cv::Exception'
what():  /home/XXX/Downloads/opencv-2.4.6.1/modules/ml/src/tree.cpp:551: error: (-5) 5273-th value of 220-th (ordered) variable (=-1.70141e+38) is too large in function CvDTreeTrainData::set_data

Aborted (core dumped)

Странно, потому что напечатанное число не выходит за пределы диапазона.
(От -3,4E + 38 до + 3,4E + 38)

Я узнал, где напечатано в исходных текстах opencv, но я не могу понять, в чем проблема:

файл tree.cpp

for( i = 0; i < sample_count; i++ )
{
float val = ord_nan;
int si = sidx ? sidx[i] : i;
if( !mask || !mask[(size_t)si*m_step] )
{
if( idata )
val = (float)idata[(size_t)si*step];
else
val = fdata[(size_t)si*step];

if( fabs(val) >= ord_nan )
{
sprintf( err, "%d-th value of %d-th (ordered) ""variable (=%g) is too large", i, vi, val );
CV_ERROR( CV_StsBadArg, err );
}
num_valid++;
}

if (is_buf_16u)
udst[i] = (unsigned short)i; // TODO: memory corruption may be here
else
idst[i] = i;
_fdst[i] = val;

}

Кто-нибудь может дать мне подсказку?

0

Решение

Если вы проверите строку 551 в файле tree.cpp, вы увидите, что fabs(val) >= ord_nan требуется где ord_nan = FLT_MAX*0.5f, Так что это не удается, когда val == -1.70141e+38 так как это больше, чем этот предел.

1

Другие решения

Других решений пока нет …

По вопросам рекламы [email protected]