cvReadTrainData
cvReadTrainData的源代码在opencv的cvboost.cpp文件之中,详细内容例如以下所看到的:
CV_BOOST_IMPL
void cvReadTrainData( const char* filename,
                      int flags,
                      CvMat** trainData,
                      CvMat** trainClasses )
{
    CV_FUNCNAME( "cvReadTrainData" );
    __BEGIN__;
    FILE* file;
    int m, n;
    int i, j;
    float val;
    int values_read = -1;
    if( filename == NULL )
    {
        CV_ERROR( CV_StsNullPtr, "filename must be specified" );
    }
    if( trainData == NULL )
    {
        CV_ERROR( CV_StsNullPtr, "trainData must be not NULL" );
    }
    if( trainClasses == NULL )
    {
        CV_ERROR( CV_StsNullPtr, "trainClasses must be not NULL" );
    }
    *trainData = NULL;
    *trainClasses = NULL;
    file = fopen( filename, "r" );
    if( !file )
    {
        CV_ERROR( CV_StsError, "Unable to open file" );
    }
    values_read = fscanf( file, "%d %d", &m, &n );
    CV_Assert(values_read == 2);
    if( CV_IS_ROW_SAMPLE( flags ) )
    {
        CV_CALL( *trainData = cvCreateMat( m, n, CV_32FC1 ) );
    }
    else
    {
        CV_CALL( *trainData = cvCreateMat( n, m, CV_32FC1 ) );
    }
    CV_CALL( *trainClasses = cvCreateMat( 1, m, CV_32FC1 ) );
    for( i = 0; i < m; i++ )
    {
        for( j = 0; j < n; j++ )
        {
            values_read = fscanf( file, "%f", &val );
            CV_Assert(values_read == 1);
            if( CV_IS_ROW_SAMPLE( flags ) )
            {
                CV_MAT_ELEM( **trainData, float, i, j ) = val;
            }
            else
            {
                CV_MAT_ELEM( **trainData, float, j, i ) = val;
            }
        }
        values_read = fscanf( file, "%f", &val );
        CV_Assert(values_read == 2);
        CV_MAT_ELEM( **trainClasses, float, 0, i ) = val;
    }
    fclose( file );
    __END__;
}
 
                    
                     
                    
                 
                    
                
 
                
            
         
         浙公网安备 33010602011771号
浙公网安备 33010602011771号