zoukankan      html  css  js  c++  java
  • 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__;
    
    }
    


  • 相关阅读:
    常用的gem source
    The `master` repo requires CocoaPods 0.29.0
    day 26 对象的封装 抽象和接口
    day25 面向对象继承 多态
    day24 面向对象 命名空间组合 以及继承
    day23 模块和包的复习 初识面向对象
    day22 模块和包
    day21 其他常用模块和异常处理
    day20 模块
    day19正则表达式和re模块
  • 原文地址:https://www.cnblogs.com/wzzkaifa/p/7008607.html
Copyright © 2011-2022 走看看