0

我有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 循环并将它们组合成一个矩阵。但是有没有一种简单的方法或功能可以帮助我以更短的方式做到这一点?

4

1 回答 1

1

这是解决此问题的一种方法。您可以先创建一个输出矩阵,然后对输出的矩形子区域(ROI - “感兴趣区域”)进行操作:

  1. 分配一个矩阵来保留结果。用所需的初始值填充矩阵(可选)。确保矩阵具有正确的维度和数据类型。例如:

    // 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));   
    
  2. 将输出矩阵中的感兴趣区域 (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.
    
  3. out已设置。你完成了。

于 2013-09-09T13:51:23.843 回答