0

私がやろうとしているのは、反復から最初の行列を取得し、それを別の行列として保存して、残りのデータに対して関数を実行するために使用できるようにすることです。以下は、反復のための私のコードです。

FileNode n = fs.root();
    for (FileNodeIterator current = n.begin(); current != n.end(); current++) 
    {
        FileNode item = *current;
        Mat v, pose;
        item["pose"] >> v;
        string Frame;
        Frame = item.name();

        if (v.rows != 0) // finding the nodes that contain data and saving them as "pose"
        {
            transpose(v, pose);
            pose.size();
            cout << "The size of pose for " << Frame;
            cout << " is: \n" << pose.size()<< "\n Data was collected for this frame: \n" << pose << endl;
        }

        if (v.rows != 6) // Nodes with no data
        {
            cout << "The size of pose for " << Frame;
            cout << " is: \n" << v.size() << "\n No Data was collected for this frame. \n" << endl;

        }

「ポーズ」の最初のインスタンスを取得して、「ベース」などの別のマトリックスとして保存する方法はありますか?

4

1 に答える 1

0

私が正しく理解していれば、おそらくあなたが望むのは、マトリックスの最初のインスタンスのみを保存するために使用できるフラグを宣言することです。

FileNode n = fs.root();
bool firstTime = true;
Mat base;
for (FileNodeIterator current = n.begin(); current != n.end(); current++) 
{
    FileNode item = *current;
    Mat v, pose;
    item["pose"] >> v;
    string Frame;
    Frame = item.name();

    if (v.rows != 0) // finding the nodes that contain data and saving them as "pose"
    {
        transpose(v, pose);
        pose.size();
        cout << "The size of pose for " << Frame;
        cout << " is: \n" << pose.size()<< "\n Data was collected for this frame: \n" << pose << endl;
    }

    if (v.rows != 6) // Nodes with no data
    {
        cout << "The size of pose for " << Frame;
        cout << " is: \n" << v.size() << "\n No Data was collected for this frame. \n" << endl;

    }

    if(firstTime) 
    {
        base = pose.clone();
        firstTime = false;
    }
}

clone()マトリックスヘッダーとデータの完全なコピーが必要な場合は、これが必要であることに注意してください。

于 2012-12-14T02:46:01.027 に答える