将列向量从矩阵复制到opencv中另一个矩阵的每个col中

时间:2014-02-05 02:26:06

标签: c++ visual-c++ opencv vector matrix

这可能很简单,但我肯定找不到有效的答案,对不起......

假设我有一个矩阵A,我想将其第一列多次复制到矩阵B中;即;

A = [1 2 3; 2 3 4; 5 6 7] 我想提取

A(:,1);

并将此向量复制到另一个矩阵,B。因此引导我们

B = [1 2 3; 1 2 3; 1 2 3];

在下一个循环之后,B将是:

B = [2 3 4; 2 3 4; 2 3 4];

依此类推,直到我顺序得到矩阵B中的所有A列

opencv中是否有实用的解决方案?我已经尝试过copyTo(),Range和row,col,但我什么都没得到。我非常感谢你的帮助。

的问候;

爵。

1 个答案:

答案 0 :(得分:1)

只需使用Mat::row循环访问Matrix的每一行,然后使用Mat::copyTo将所选行复制到新Mat

参见示例

Mat A=(Mat_<uchar>(3,3)<< 1,2,3,\
                          2,3,4,\
                          5,6,7);

Mat B(A.rows,A.cols,CV_8UC1);


for(int i=0;i<A.rows;i++) {
  for(int j=0;j<A.rows;j++){
    A.row(i).copyTo(B.row(j));
  }
 cout<<B<<endl;
}

您也可以使用Mat::push_back执行此操作。

参见示例

Mat A=(Mat_<uchar>(3,3)<< 1,2,3,\
                          2,3,4,\
                          5,6,7);

 for(int i=0;i<A.rows;i++) {
    Mat B;
    for(int j=0;j<A.rows;j++){
      B.push_back(A.row(i));
     }
     cout<<B<<endl;
  }