4

こんにちは、Mat オブジェクトをテキスト ファイルに書き込むことができます。次のように、

std::fstream outputFile;
    outputFile.open( "myFile.txt", std::ios::out ) ;

    outputFile << des_object.rows << std::endl;
    outputFile << des_object.cols << std::endl;

    for(int i=0; i<des_object.rows; i++)
    {
        for(int j=0; j<des_object.cols; j++)
        {
            outputFile << des_object.at<float>(i,j) << std::endl;
        }

    }
    outputFile.close( );

私のコードでは、最初の 2 行で、読み返すときに使用する行数と列数を出力しています。しかし、テキストファイルを読み取ってマットオブジェクトを再度作成することはできません。

以下は私が試したコードです。私のコードが正しいかどうかわかりません。

Mat des_object1;
    std::ifstream file("myFile.txt");
    std::string str; 
    int rows;
    int cols;
    int a = 0;
    while (std::getline(file, str))
    {
        int i = 0;
        int j = 0;

        if(a == 0){
            rows = std::stoi( str );
        }else if(a == 1){
            cols = std::stoi( str );
        }else{

            for(i; i< rows; i++)
            {
                for(j; j<cols; j++)
                {
                     des_object1.at<float>(i,j) = ::atof(str.c_str());
                     break;
                }
            }

        }
        ++a;
    }
4

4 に答える 4

0

このようなことを試してください:

これら2つをwhileループ外で初期化します

int k=0;
int l=0;

forループを使用する代わりに

if(j<cols){
    des_object1.at<float>(k,l) = ::atof(str.c_str());
}else{
    k=0;
    l++;
    des_object1.at<float>(k,l) = ::atof(str.c_str());
}
j++;
于 2013-10-05T19:20:29.670 に答える