How to merge 3 matrices into 1 in opencv?

后端 未结 3 2102
离开以前
离开以前 2021-01-06 18:33

I have three matrices, each of size 4x1. I want to copy all of these matrices to another matrix of size 4x3 and call it R. Is there a

相关标签:
3条回答
  • 2021-01-06 19:05

    You can use

    Mat R(3, 4, CV_32F); // [3 rows x 4 cols] with float values
    mat1.copyTo(R.row(0));
    mat2.copyTo(R.row(1));
    mat3.copyTo(R.row(2));
    

    or

    Mat R(4, 3, CV_32F); // [4 rows x 3 cols] with float values
    mat1.copyTo(R.col(0));
    mat2.copyTo(R.col(1));
    mat3.copyTo(R.col(2));
    

    Alternatively, as @sub_o suggested, you can also use hconcat()/vconcat() to concatenate matrices.

    0 讨论(0)
  • 2021-01-06 19:14

    You can just use hconcat for horizontal concatenation. You can use it per matrix, e.g. hconcat( mat1, mat2, R ), or apply it directly on a vector or array of matrices.

    Here's a sample code:

    vector<Mat> matrices = {
        Mat(4, 1, CV_8UC1, Scalar(1)),
        Mat(4, 1, CV_8UC1, Scalar(2)),
        Mat(4, 1, CV_8UC1, Scalar(3)),
    };
    Mat R;
    hconcat( matrices, R );
    cout << R << endl;
    

    Here's the result:

    [1, 2, 3;
      1, 2, 3;
      1, 2, 3;
      1, 2, 3]
    Program ended with exit code: 1
    

    Similarly, if you want to do it vertically (stack by rows), use vconcat.

    0 讨论(0)
  • 2021-01-06 19:15

    For those using OpenCv in Python, if you have arrays A, B, and C, and want array D that is horizontal concatenation of the others:

    D = cv2.hconcat((A, B, C))
    

    There is also a vconcat method.

    0 讨论(0)
提交回复
热议问题