我有三个大小为4x1
的矩阵。我想将所有这些矩阵复制到另一个大小为4x3
的矩阵中,并将其称为R
。有没有聪明的方法可以做到这一点?
我有三个大小为4x1
的矩阵。我想将所有这些矩阵复制到另一个大小为4x3
的矩阵中,并将其称为R
。有没有聪明的方法可以做到这一点?
您可以使用hconcat进行水平连接。您可以针对每个矩阵使用它,例如hconcat(mat1, mat2, R),或者直接在向量或矩阵数组上应用它。
这是一个示例代码:
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;
这是结果:
[1, 2, 3;
1, 2, 3;
1, 2, 3;
1, 2, 3]
Program ended with exit code: 1
同样地,如果您想垂直地完成此操作(按行堆叠),请使用vconcat。
您可以使用
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));
或者
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));
另外,正如@sub_o所建议的那样,您也可以使用hconcat()/vconcat()
来连接矩阵。
对于在Python中使用OpenCv的人,如果你有数组A
、B
和C
,并且想要一个数组D
,它是其他数组的水平连接:
D = cv2.hconcat((A, B, C))
还有一个vconcat
方法。
mat1
的大小吗? - herohuyongtao