这可能很简单,但我肯定找不到有效的答案,对不起......
假设我有一个矩阵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,但我什么都没得到。我非常感谢你的帮助。
的问候;
爵。
答案 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;
}