0

マトリックス内に 4 つのマトリックスを保存しようとしていますが、それができるかどうかわかりませんでした。そのため、4 マトリックスを 4 つのベクトルに変換しました。ここで、4 つのベクトルを行列に挿入します。私のコードは次のとおりです。

       Mat hist_TL = Mat::zeros(20,1, CV_32F);
       Mat hist_TR = Mat::zeros(20,1, CV_32F);
       Mat hist_BL = Mat::zeros(20,1, CV_32F);
       Mat hist_BR = Mat::zeros(20,1, CV_32F);
        for(int i=1;i<=21;i++)
        {
            for(int k=0;k<TL_k_stats.rows;k++)
            {
            if((angl_TL<=bins[i]) && (angl_TL>bins[i-1]))
            {
               hist_TL.at<float>(i-1,0)+=TL_k_stats.at<float>(k,4);
            }
            if((angl_TR<=bins[i]) && (angl_TR>bins[i-1]))
               {
                hist_TR.at<float>(i-1,0)+=TR_k_stats.at<float>(k,4);
               }

            if((angl_BL<=bins[i]) && (angl_BL>bins[i-1]))
               {
                hist_BL.at<float>(i-1,0)+=BL_k_stats.at<float>(k,4);
               }

            if((angl_BR<=bins[i]) && (angl_BR>bins[i-1]))
               {
                hist_BR.at<float>(i-1,0)+=BR_k_stats.at<float>(k,4);
               }
            }
        hist_TL=hist_TL.inv();
        hist_TR=hist_TR.inv();
        hist_BL=hist_BL.inv();
        hist_BR=hist_BR.inv();
        std::vector<float> vhist_TL;
        std::vector<float> vhist_TR;
        std::vector<float> vhist_BL;
        std::vector<float> vhist_BR;

        hist_TL.copyTo(vhist_TL);
        hist_TR.copyTo(vhist_TR);
        hist_BL.copyTo(vhist_BL);
        hist_BR.copyTo(vhist_BR);

そのため、4 つのベクトルを 1 つのマトリックスにコピーしたいと考えています。マトリックスをベクトルに変換せずにそれを行う方法があれば教えてください.matlabでは、配列に直接格納してこのように返すことができます

features[] = {hist_TL', hist_TR', hist_BL', hist_BR'};

では、どうすればopencvでこれを達成できますか??

4

2 に答える 2

0

次のように、4 つの行列をより大きな行列に直接コピーできます。

    Mat TL(rows, cols, type);
    Mat TR(rows, cols, type);
    Mat BL(rows, cols, type);
    Mat BR(rows, cols, type);
    Mat dst(rows * 2, cols *2, type);
    TL.copyTo(dst(Rect(0, 0, cols, rows)));
    TR.copyTo(dst(Rect(cols, 0, cols, rows)));
    BL.copyTo(dst(Rect(0, rows, cols, rows)));
    BR.copyTo(dst(Rect(cols, rows, cols, rows)));

ドキュメント:

http://docs.opencv.org/modules/core/doc/basic_structures.html#rect http://docs.opencv.org/modules/core/doc/basic_structures.html?highlight=copyto#mat-copyto

于 2013-08-27T04:15:01.473 に答える