我没有太多使用Mat,因此,如果这个问题非常简陋的话,请和我一起玩。我有2个矩阵如下
R = [1,0,0,0
0,1,0,0
0,0,1,0
0,0,0,1]
和
T = [1,0,0]
我可以用这种格式从上面的2制作4X4矩阵吗?
[ R | T
0 0 0 1]
这基本上是从旋转和平移中获得变换矩阵。我正在尝试使用for循环并将它们组合成一个矩阵。但是有一种简单的方法或功能可以帮助我以更短的方式做到这一点吗?非常感谢您的帮助。提前致谢
答案 0 :(得分:1)
这是一种解决这个问题的方法。您可以先创建输出矩阵,然后对输出的矩形子区域进行操作(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
已设置。你已经完成了。