【问题标题】:copy column vector from a matrix into each col of another matrix in opencv将矩阵中的列向量复制到opencv中另一个矩阵的每个列中
【发布时间】:2014-02-05 02:26:06
【问题描述】:

这可能很简单,但我确实找不到有效的答案,抱歉...

假设我有一个矩阵 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,但我什么也没得到。非常感谢您的帮助。

问候;

杰恩。

【问题讨论】:

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


    【解决方案1】:

    只需使用Mat::row 循环访问矩阵的每一行,然后使用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;
      }
    

    【讨论】:

    • 非常感谢您的帮助,这正是我所需要的。问候
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 2013-11-18
    • 1970-01-01
    • 1970-01-01
    • 2012-09-22
    • 2012-12-11
    • 1970-01-01
    • 2019-04-13
    相关资源
    最近更新 更多