0

次のメソッドの入力パラメーターとして 2 つの行列を考えます。2 つの行列をsample_method()マージして、新しい行列にします。このリファレンスを読み、次にこのリファレンスも読みましたが、これら 2 つのソリューションはソース マトリックスから宛先マトリックスにデータをコピーします。m1m2m12

bool sample_method(const Mat& m1, const Mat& m2)
{
    if(m1.cols != m2.cols)
    {
        cout << "Error: m1.cols != m2.cols" << endl;
        return false;
    }

    Mat m12(m1.rows+m2.rows,m1.cols,DataType<float>::type);
    // merging m1 and m2
    m12(Rect(0,0,m1.cols,m1.rows)) = m1;
    m12(Rect(0,m1.rows,m2.cols,m2.rows)) = m2;

    return true;
}

データをコピーせずに、2 つの Mat を 1 つの Mat に連結するにはどうすればよいですか? コードが機能しないのはなぜですか?

4

2 に答える 2

4

私はあなたがそれを機能させるつもりはないと思います。Matオブジェクトには、そのデータへの1つのポインターと、そのデータの解釈に役立つパラメーターがあります。2つの無関係なメモリブロックからMatを作成するように求めていますが、両方へのポインタを何らかの方法で格納せずにそれを行う方法はなく、Matにはそれを配置するためのメンバー変数がありません。

于 2013-01-07T00:54:08.723 に答える