我有 2 个矩阵如下
R = [1,0,0,0
0,1,0,0
0,0,1,0
0,0,0,1]
和
T = [1,0,0]
我可以从上述 4 个以这种格式制作 2X2 矩阵吗?
[ R | T
0 0 0 1]
这基本上是从旋转和平移中获得变换矩阵。我正在尝试使用 for 循环并将它们组合成一个矩阵。但是有没有一种简单的方法或功能可以帮助我以更短的方式做到这一点?
这是解决这个问题的一种方法。您可以先创建一个输出矩阵,然后对输出的矩形子区域进行操作(ROI – "感兴趣区域"):
-
分配一个将保留结果的矩阵。用所需的初始值填充矩阵(可选)。确保矩阵具有正确的维度和数据类型。例如:
// create output matrix // rows and cols specify the disired size for the output matrix // CV_32F is data type for matrix elements Mat out(rows, cols, CV_32F, Scalar(0));
-
将输出矩阵中的感兴趣区域 (ROI) 设置为所需的子矩阵。例如
// your input matrices Mat R, T; // set ROI for R cv::Rect rect_R(0, 0, R.rows, R.cols); cv::Mat out_R = out(rect_R); // this assignment does not copy data // out and out_R now share data // assign out_R to R out_R = R; // similarly you can set another area of out to matrix T, etc.
-
out
设置好了。大功告成。